码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA并发编程5_线程状态

时间:2015-08-25 12:00:21      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:java   多线程   

JAVA线程的可能处于一下几种状态,任意的时间点一个线程只能处于一个状态。

1. 新建状态(New):创建后尚未启动的线程处于这种状态。

转移时机:创建一个新线程。

2. 就绪状态(Runnable):调用了start()方法,该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

转移时机:调用start()方法。

处于Running状态的线程被CPU选择执行其他线程。

执行Thread.yeild(),不保证。

3. 运行状态(Running):就绪状态的线程获得的了CPU的执行权,正在执行run方法。

转移时机:获得了CPU的执行权。

4. 阻塞(Blocked):运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

转移时机:已经有其他线程正在执行同步代码段,等待同步锁。

5. 无期限等待(Waiting):不会被分配CPU的执行事件,要等待被其他线程显式的唤醒,以下方法导致线程陷入无期限等待:

转移时机:未设置timeout参数的Object.wait()方法

未设置timeout参数的Thread.join()方法

6. 期限等待(Time Waiting):也不会被分配CPU执行事件,不过无需等待其他线程显式的唤醒,在一定时间之后会由系统自动唤醒。以下方法导致线程陷入期限等待:

转移时机:设置Timeout参数的Object.wait()方法

设置Timeout参数的Thread.join()方法

Thread.sleep(long)方法

7. 结束(Terminated):线程执行完了,run方法退出。

技术分享

JAVA并发编程5_线程状态

标签:java   多线程   

原文地址:http://blog.csdn.net/cauchyweierstrass/article/details/47974667

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!