#线程的状态(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];