下图是线程状态示意图,从图中可以看出线程的生命周期是:新建 - 就绪 - 运行 - 阻塞 - 死亡
image.png下面分别阐述线程生命周期中的每一步
-
新建:实例化线程对象
-
就绪:向线程对象发送start消息,线程对象被加入可调度线程池等待CPU调度。
-
运行:CPU 负责调度可调度线程池中线程的执行。线程执行完成之前,状态可能会在就绪和运行之间来回切换。就绪和运行之间的状态变化由CPU负责,程序员不能干预。
-
阻塞:当满足某个预定条件时,可以使用休眠或锁,阻塞线程执行。sleepForTimeInterval(休眠指定时长),sleepUntilDate(休眠到指定日期),@synchronized(self):(互斥锁)。
-
死亡:正常死亡,线程执行完毕。非正常死亡,当满足某个条件后,在线程内部中止执行/在主线程中止线程对象
-
还有线程的exit和cancel
-
[NSThread exit]:一旦强行终止线程,后续的所有代码都不会被执行。
-
[thread cancel]取消:并不会直接取消线程,只是给线程对象添加 isCancelled 标记。
网友评论