#多线程学习——线程的5种状态

线程状态图
#多线程学习——线程的5种状态_第1张图片
线程包括5种状态
1.new(新建状态):线程对象被创建后,就会进入新建状态。如:Thread thread = new Thread().
(通俗说:一个thread少女长大成人)

2.Runnable(就绪状态):就绪状态也叫可执行状态。当线程被创建后,调用start方法后(thread.start()),该线程就进入了就绪状态,等待CPU调度使用。
(通俗说:thread少女被start公公选为秀女,从此就是thread秀女等待被CPU皇帝宠幸)

3.Running(运行状态):当线程获取到CPU的使用权时,即进入了运行状态。注:运行状态只能从就绪状态转化而来
(通俗说:thread秀女被CPU皇帝宠幸了,变成了thread妃子)

4.Blocked(阻塞转态):阻塞状态是线程由于某些原因放弃了CPU使用权,暂时停止运行的一种状态。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况可以分为三种:
(通俗说:thread妃子因为某些原因不想或不能被CPU皇帝所宠幸)
(1)wait(等待阻塞):线程调用wait()方法,让线程等待某工作的完成
(通俗说:thread妃子要先做其他的事情,让CPU皇帝去宠幸其他妃子)

(2)synchronized(同步阻塞):线程在获取同步锁(synchronized)失败,即锁被其他线程占用,它就会进入同步阻塞状态。(通俗说:CPU皇帝在宠幸其他妃子)

(3)其他阻塞:当线程调用sleep(),join()或者发出I/O请求的时候,线程就会进入阻塞转态。当sleep,join方法等线程终止、或者超时、或者I/O处理完毕时,线程就会重新进入就绪状态。
(通俗说:thread妃子在睡觉、threa妃子不想被宠幸、thread妃子要忙一件要花费很久的事情,让CPU皇帝先宠幸其他妃子)

5.Dead(死亡状态):线程执行完或者异常退出了run方法,该线程结束生命周期。
(通俗说:thread妃子正常走完一生或者中途出现意外去世)

你可能感兴趣的:(多线程)