付费节点推荐
免费节点
节点使用教程
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_线程状态
评论前必须登录!
登陆 注册