简述Java中线程对象的状态及转换关系。
时间: 2024-04-22 13:28:58 浏览: 109
《Java面向对象编程》练习题.pdf
Java中线程对象的状态可分为以下六种:
1. 新建状态(New):当线程对象被创建时,它处于新建状态。
2. 就绪状态(Runnable):当线程对象调用start()方法后,它进入就绪状态。此时线程并没有开始执行,只是等待获取CPU资源。
3. 运行状态(Running):当获取CPU资源后,线程开始执行,进入运行状态。
4. 阻塞状态(Blocked):当线程因为某些原因暂时失去了CPU资源时,进入阻塞状态。例如,线程因为等待IO操作或者调用了sleep()方法。
5. 等待状态(Waiting):当线程因为等待某个条件而进入等待状态,例如调用了wait()方法。
6. 终止状态(Terminated):线程执行完毕或者因为异常终止时,进入终止状态。
线程状态的转换关系如下:
1. 新建状态 -> 就绪状态:当线程对象被创建时,它处于新建状态。当调用start()方法后,线程进入就绪状态。
2. 就绪状态 -> 运行状态:当获取CPU资源后,线程开始执行,进入运行状态。
3. 运行状态 -> 就绪状态:当线程执行完毕或者因为调用了yield()方法而放弃CPU资源时,线程进入就绪状态。
4. 运行状态 -> 阻塞状态:当线程因为某些原因暂时失去了CPU资源时,进入阻塞状态。
5. 阻塞状态 -> 就绪状态:当线程等待的条件满足时,例如IO操作完成或者sleep()时间到了,线程进入就绪状态。
6. 运行状态 -> 等待状态:当线程因为等待某个条件而进入等待状态,例如调用了wait()方法。
7. 等待状态 -> 就绪状态:当线程等待的条件满足时,例如调用了notify()或者notifyAll()方法,线程进入就绪状态。
8. 运行状态 -> 终止状态:当线程执行完毕或者因为异常终止时,进入终止状态。
阅读全文