简述java中线程的几种状态,以及相互之间如何转换
时间: 2024-06-07 13:08:28 浏览: 125
在Java中,线程有以下几种状态:
1. 新建状态(New):当线程对象被创建时,它处于新建状态。
2. 运行状态(Runnable):当调用线程的start()方法后,线程进入就绪状态,等待CPU的调度执行。
3. 阻塞状态(Blocked):当线程在等待某个条件(如锁)时,它会进入阻塞状态。
4. 等待状态(Waiting):当线程在等待另一个线程的通知时,它会进入等待状态。
5. 计时等待状态(Timed Waiting):当线程在等待另一个线程的通知,但是设置了等待时间时,它会进入计时等待状态。
6. 终止状态(Terminated):当线程执行完所有的代码并结束时,它会进入终止状态。
线程的状态之间可以相互转换:
1. 新建状态 -> 运行状态:调用start()方法。
2. 运行状态 -> 阻塞状态:等待某个条件(如锁)时。
3. 运行状态 -> 等待状态:调用wait()方法。
4. 运行状态 -> 计时等待状态:调用sleep()方法或者wait(long timeout)方法。
5. 阻塞状态 -> 运行状态:获取到了某个条件(如锁)。
6. 等待状态 -> 运行状态:另一个线程调用notify()或notifyAll()方法。
7. 计时等待状态 -> 运行状态:等待时间到了或者另一个线程调用notify()或notifyAll()方法。
8. 运行状态 -> 终止状态:线程执行完所有代码并结束。
阅读全文