JAVA并发编程5_线程状态

付费节点推荐


免费节点


节点使用教程


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方法退出。

未经允许不得转载:Bcoder资源网 » JAVA并发编程5_线程状态

相关推荐

更多优质资源关注微信公众号: bcoder

bcoder
赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册