1.简述Java中线程对象的状态及转换关系。
时间: 2024-04-22 17:27:38 浏览: 97
《Java面向对象编程》练习题.pdf
Java中的线程对象有以下几种状态:
1. 新建状态(New):当线程对象被创建但还没有调用 start() 方法启动线程时,该线程处于新建状态。
2. 就绪状态(Runnable):当线程对象调用 start() 方法后,该线程处于就绪状态,等待获取 CPU 时间片执行。
3. 运行状态(Running):当线程获得 CPU 时间片并开始执行 run() 方法时,该线程处于运行状态。
4. 阻塞状态(Blocked):当线程执行某些操作时,如等待 I/O 或获取 synchronized 锁时,该线程处于阻塞状态。
5. 死亡状态(Dead):当线程的 run() 方法执行完毕或调用 stop() 方法将该线程停止时,该线程处于死亡状态。
线程对象的状态转换关系如下:
1. 新建状态(New) -> 就绪状态(Runnable):调用 start() 方法启动线程。
2. 就绪状态(Runnable) -> 运行状态(Running):获取 CPU 时间片并开始执行 run() 方法。
3. 运行状态(Running) -> 就绪状态(Runnable):运行状态转为就绪状态是因为该线程的时间片用完或者调用 yield() 方法主动让出 CPU 时间片。
4. 运行状态(Running) -> 阻塞状态(Blocked):执行某些操作时,如等待 I/O 或获取 synchronized 锁时,线程进入阻塞状态。
5. 阻塞状态(Blocked) -> 就绪状态(Runnable):等待 I/O 或获取 synchronized 锁的操作完成后,线程进入就绪状态。
6. 运行状态(Running) -> 死亡状态(Dead):run() 方法执行完毕或调用 stop() 方法将该线程停止时,线程进入死亡状态。
阅读全文