线程的生命周期
- 生命周期整体框架
- 主要过程说明
- 注意点
生命周期整体框架
线程的生命周期主要分为:新建、可运行、运行、阻塞、终止这几个状态。下面展现其状态转化框架图。
主要过程说明
sleep(): 使比其优先级低的线程运行(不占用cpu)
yield(): 只让给同优先级的县城运行,将自己置于可运行线程池。(对象锁保持)
join(): 形式 t.join()。 等待线程t结束,线程进入可运行状态。
interrupt(): 清除线程的中断或阻塞状态。
注意点
- sleep()和wait()的异同
同: 均释放cpu。
异: sleep()是Thread类的static方法,保持对象锁,时间结束后进入可运行状态,需要捕获异常,任何地方均可使用。
wait()是object类的方法,放弃对象锁,只有通过notify()/notifyAll()才能唤醒,不必捕获异常,只能用于同步控制块中。 - 线程交互过程中不提倡使用stop(),suspend(),resume()。