线程有哪些状态?Java代码里面通过什么命令进行状态转换
时间: 2023-05-28 11:02:12 浏览: 140
Java线程:线程状态的转换.pdf
1. 新建状态(New):当创建一个线程对象时,该线程处于新建状态。
2. 就绪状态(Runnable):当调用 start() 方法后,该线程进入就绪状态,等待 CPU 调度执行。
3. 运行状态(Running):当 CPU 调度该线程时,该线程进入运行状态。
4. 阻塞状态(Blocked):当线程需要等待某个操作完成或者等待某个条件时,该线程进入阻塞状态。
5. 等待状态(Wait):当线程需要等待其他线程发出特定的通知或者等待指定时间时,该线程进入等待状态。
6. 超时等待状态(Timed Waiting):当线程需要等待其他线程发出特定的通知或者等待指定时间时,该线程进入超时等待状态。
7. 终止状态(Terminated):当线程执行完 run() 方法后,该线程进入终止状态。
在 Java 中,线程的状态转换是由 JVM 自动控制的,我们无法手动控制。线程可以自行或被其他线程改变其状态,例如:
1. 当线程调用了 sleep() 或者 join() 方法时,该线程由运行状态转为超时等待状态或者阻塞状态,直到指定时间到达或者等待的线程执行完毕。
2. 当线程调用了 wait() 方法时,该线程由运行状态转为等待状态,等待其他线程发出通知。
3. 当其他线程调用了 notify() 或者 notifyAll() 方法时,处于等待状态的线程由等待状态转为就绪状态,等待 CPU 调度执行。
阅读全文