
java线程运行怎么有第六种状态
展开全部
其实线程只有"就绪"、"阻塞"、"运行"三种状态:
1. 运行状态,线程正在干活的状态
2. 就绪状态,CPU正在忙活别的,线程摇晃着一个"恭候您光临"的小旗子的状态
3. 阻塞状态,线程主动让出CPU资源,摇晃着一个"我这会还不能出台您稍后再来"的小旗子的状态
"新建"和"终止"这两种状态其实并不是线程的状态,而是java.lang.Thread对象的状态。可以说,处于"新建"和"终止"状态的"线程"其实并不是线程,而只是一个代表着线程对象而已。
所以我们把"新建(NEW)"和"终止(TERMINATED)"两种状态去掉,那么Java定义的线程状态还有4种:
1. RUNNABLE
2. BLOCKED
3. WAITING
4. TIMED_WAITING
这四种状态怎么对应到"就绪"、"阻塞"、"运行"这三种状态里呢:
1. RUNNABLE,对应"就绪"和"运行"两种状态,也就是说处于就绪和运行状态的线程在java.lang.Thread中都表现为"RUNNABLE"
2. BLOCKED,对应"阻塞"状态,此线程需要获得某个锁才能继续执行,而这个锁目前被其他线程持有,所以进入了被动的等待状态,直到抢到了那个锁,才会再次进入"就绪"状态
3. WAITING,对应"阻塞"状态,代表此线程正处于无限期的主动等待中,直到有人唤醒它,它才会再次进入就绪状态
4. TIMED_WAITING,对应"阻塞"状态,代表此线程正处于有限期的主动等待中,要么有人唤醒它,要么等待够了一定时间之后,才会再次进入就绪状态
1. 运行状态,线程正在干活的状态
2. 就绪状态,CPU正在忙活别的,线程摇晃着一个"恭候您光临"的小旗子的状态
3. 阻塞状态,线程主动让出CPU资源,摇晃着一个"我这会还不能出台您稍后再来"的小旗子的状态
"新建"和"终止"这两种状态其实并不是线程的状态,而是java.lang.Thread对象的状态。可以说,处于"新建"和"终止"状态的"线程"其实并不是线程,而只是一个代表着线程对象而已。
所以我们把"新建(NEW)"和"终止(TERMINATED)"两种状态去掉,那么Java定义的线程状态还有4种:
1. RUNNABLE
2. BLOCKED
3. WAITING
4. TIMED_WAITING
这四种状态怎么对应到"就绪"、"阻塞"、"运行"这三种状态里呢:
1. RUNNABLE,对应"就绪"和"运行"两种状态,也就是说处于就绪和运行状态的线程在java.lang.Thread中都表现为"RUNNABLE"
2. BLOCKED,对应"阻塞"状态,此线程需要获得某个锁才能继续执行,而这个锁目前被其他线程持有,所以进入了被动的等待状态,直到抢到了那个锁,才会再次进入"就绪"状态
3. WAITING,对应"阻塞"状态,代表此线程正处于无限期的主动等待中,直到有人唤醒它,它才会再次进入就绪状态
4. TIMED_WAITING,对应"阻塞"状态,代表此线程正处于有限期的主动等待中,要么有人唤醒它,要么等待够了一定时间之后,才会再次进入就绪状态
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |