02-线程的状态(NSThread)

线程的状态(NSThread)


新建状态

  • 创建线程
NSThread *thread = [NSThread alloc] initWithTarget:self selector:@selector(demo) withObject:nil];

就绪状态

  • 启动线程
[thread start];

运行状态

  • 方法(demo)被调用了

阻塞状态

  • 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];

posted @ 2015-09-03 16:12  紫之灵玲  阅读(164)  评论(0编辑  收藏  举报