java 线程的几种状态
时间: 2023-08-05 16:29:29 浏览: 66
Java线程有以下几种状态:
1. 新建状态(New):当线程对象被创建时,它处于新建状态,此时它还没有启动。
2. 运行状态(Runnable):当线程被 start() 方法启动后,它就处于运行状态。此时线程可能正在执行,也可能正在等待 CPU 时间片。
3. 阻塞状态(Blocked):当线程因为某些原因无法获取到所需的资源(例如等待 I/O 完成、等待获取 synchronized 锁等)而暂停执行时,它就处于阻塞状态。
4. 等待状态(Waiting):当线程调用了 wait()、join()、park() 等方法后,它就进入了等待状态。等待状态的线程需要等待其他线程的通知或者等待一定时间后自动唤醒。
5. 计时等待状态(Timed Waiting):和等待状态类似,但这种状态有一个等待超时时间,当等待超时后线程会自动唤醒。
6. 终止状态(Terminated):当线程的 run() 方法执行完毕或者因为异常等原因导致线程终止时,它就处于终止状态。
相关问题
Java中线程有几种状态
Java中的线程有以下几种状态:
1. 新建状态(New):当线程对象被创建时,它处于新建状态。
2. 就绪状态(Runnable):当线程被start()方法启动之后,线程进入就绪状态。此时线程已经获得了除CPU资源以外的所有资源,等待获取CPU资源后才能真正运行。
3. 运行状态(Running):当线程获得CPU资源后,线程进入运行状态,开始执行run()方法中的代码。
4. 阻塞状态(Blocked):当线程因为某些原因(如等待IO操作,等待获取锁)而不能继续执行时,线程进入阻塞状态。
5. 等待状态(Waiting):当线程需要等待其他线程通知才能继续执行时,线程进入等待状态。
6. 计时等待状态(Timed Waiting):当线程需要等待一定时间或者等待其他线程通知才能继续执行时,线程进入计时等待状态。
Java线程的状态及转换
Java线程有以下几种状态:
1. New(新建):当一个Thread类或者Runnable接口的实例被创建时,该线程处于新建状态。
2. Runnable(可运行):当调用start()方法启动一个线程时,该线程处于可运行状态。线程在此状态下可能正在等待CPU时间片,也可能正在执行。
3. Blocked(阻塞):当线程在等待某个对象的锁时,该线程处于阻塞状态。
4. Waiting(等待):当线程在等待某个条件时,该线程处于等待状态。例如,调用了wait()方法或join()方法时,线程会进入等待状态。
5. Timed Waiting(计时等待):当线程执行了sleep()方法、调用了带有超时参数的join()方法或wait()方法时,线程会进入计时等待状态。
6. Terminated(终止):当线程的run()方法执行结束时,该线程处于终止状态。
线程状态之间的转换如下:
1. New -> Runnable:调用start()方法启动线程。
2. Runnable -> Blocked:线程在等待某个对象的锁时,会进入阻塞状态。
3. Runnable -> Waiting:线程调用了wait()方法或join()方法时,会进入等待状态。
4. Runnable -> Timed Waiting:线程调用了sleep()方法或带有超时参数的join()方法时,会进入计时等待状态。
5. Blocked -> Runnable:线程获取到了对象的锁,会进入可运行状态。
6. Waiting -> Runnable:线程等待的条件满足时,会进入可运行状态。
7. Timed Waiting -> Runnable:计时等待时间到达时,会进入可运行状态。
8. Runnable -> Terminated:线程的run()方法执行结束时,会进入终止状态。