java线程状态有哪些?每种状态的原因
时间: 2023-06-07 19:07:48 浏览: 217
JAVA线程状态
Java中线程的状态有六种,分别是:
1. 新建状态(New):当一个线程对象被创建时,它处于新建状态,此时它还没有开始运行。
2. 运行状态(Runnable):当调用start()方法后,线程对象开始运行,处于可运行状态。此时,线程可能正在执行,也可能正在等待系统分配资源。
3. 阻塞状态(Blocked):一个运行中的线程在某些情况下可能会进入阻塞状态。例如,线程调用了sleep()方法、IO操作、等待某个对象的锁、等待进入同步块等。
4. 等待状态(Waiting):当一个线程调用了wait()方法后,它就会进入等待状态,等待被唤醒或中断,可以通过notify()或notifyAll()方法唤醒。
5. 计时等待状态(Timed Waiting):某些情况下,线程需要等待一段时间再继续执行,调用sleep()或join()方法就会使线程进入计时等待状态。
6. 结束状态(Terminated):线程的任务执行完毕或者发生了异常,线程进入结束状态。
每种状态的原因如下:
1. 新建状态(New):线程刚被建立,还没有开始执行。
2. 运行状态(Runnable):线程被启动,正在执行任务。
3. 阻塞状态(Blocked):线程在等待某个锁或者I/O操作完成。
4. 等待状态(Waiting):线程在调用wait()方法后,等待被唤醒。
5. 计时等待状态(Timed Waiting):线程在调用sleep()、join()等方法后,等待一定的时间后继续执行。
6. 结束状态(Terminated):线程任务执行完毕或者抛出了异常,线程结束。
阅读全文