线程的状态(NSThread)
新建状态
NSThread *thread = [NSThread alloc] initWithTarget:self selector:@selector(demo) withObject:nil];
就绪状态
[thread start];
运行状态
阻塞状态
- sleepForTimeInterval:2.0(
开发中常用,简单易于理解
)
- sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]😭
开发中不会用这个
)
- sleepUntilDate:[NSDate distantFuture]; //遥远的未来
- sleepUntilDate:[NSDate distantPast];//遥远的过去
注意
在哪个线程中调用sleepForTimeInterval(类方法),哪个线程就会被睡
- (void)demo
{
for(int i =1 i<=20; i++)
{
NSLog(@"%i ===%@",i,[NSThread currentThread]);
if(i % 5 == 0)
{
NSLog(@"睡一会");
//告诉当前线程睡2秒
//状态:阻塞
[NSThread sleepForTimeInterval:2.0];
}
//状态:消亡
if(i = 11)
{
//强制结束线程
//[NSThread exit];//专业
return;//粗暴[NSThread exit] == return
}
}
NSLog(@"++++++打印说明没有被强制退出");
}
死亡/消亡状态
- 如果线程被强制退出了,那么后面的代码就不会执行了
- 在哪个线程中调用[NSThread exit],那么强制结束的就是哪个线程
//强制结束线程
[NSThread exit];