线程状态概述和等待唤醒案例分析

线程状态概述

线程状态 导致状态发生条件
NEW 至今尚未启动的线程处于这种状态
RUNNABLE 正在Java虚拟机中执行的线程处于这种状态
BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态
WAITING 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态
TIMED_WAITING 等待另一个线程来执行取决于指定等待时间的操作的先处于这种状态
TERMINATED 已退出的线程处于这种状态

 

 

 

 

 

 

 

 

 

阻塞状态 :具有cpu的执行资格,等待cpu空闲时执行

休眠状态 :放弃cpu的执行资格,cpu空闲,也不执行

 

 

 

等待唤醒案例分析

wait:线程不再活动,不再参与调度,进入wait set中,因此不会浪费CPU资源,也不会去竞争锁了,这时的线程状态即时WAITING。

  它还要等着别的线程执行一个特别的动作,也即是“通知(notify)”在这个对象上等待的线程从wait set中释放出来,重新进入到调度队列中

notify:选取所通知对象的wait set中的一个线程释放;例如,参观有空位后,等待就餐最久的顾客最先入座。

notifyAll:通知所有的由于使用这个同步方法而处于等待的线程结束等待。

 

 

posted @ 2022-07-10 10:19  魔光领域  阅读(24)  评论(0编辑  收藏  举报