iOS多线程-生命周期

- 新建
- 内存中创建了一个线程对象
NSThread *th1 = [[NSThread alloc] initWithTarget:self selector:@selector(threadDemo) object:nil];
- 就绪
- 将线程放进可调度线程池,等待被CPU调度
[th1 start];
- 运行
- CPU负责调度 可调度线程池 中的处于 就绪状态 的线程
- 线程执行结束之前,状态可能会在 就绪状态 和 运行状态 之间来回的切换
- 就绪状态 和 运行状态 之间的状态切换由CPU来完成,程序员无法干涉
- 阻塞
- 正在运行的线程,当满足某个条件时,可以用休眠或者锁来阻塞线程的执行(此时该线程进入阻塞状态,也就是出了可调度线程池)
- sleepForTimeInterval:休眠指定时长
[NSThread sleepForTimeInterval:1.0];
- sleepUntilDate:休眠到指定日期
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
- 互斥锁(同步锁)
@synchronized(self)
- 销毁
- 正常死亡:线程执行结束
- 非正常死亡
- 程序突然崩溃
- 当满足某个条件后,在线程内部强制线程退出,调用exit方法