线程包括哪些状态?线程状态之间是如何变化的?
1. 线程包括哪些状态
新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、时间等待(TIMED_WALTING)、终止(TERMINATED)
2. 线程状态之间是如何变化的
- 创建线程对象是新建状态
- 调用了start()方法转变为可执行状态
- 线程获取到了CPU的执行权,执行结束是终止状态
- 在可执行状态的过程中,如果没有获取CPU的执行权,可能会切换其他状态
◆ 如果没有获取锁(synchronized或lock)进入阻塞状态,获得锁再切换为可执行状态
◆ 如果线程调用了wait()方法进入等待状态,其他线程调用notify()唤醒后可切换为可执行状态
◆ 如果线程调用了sleep(50)方法,进入计时等待状态,到时间后可切换为可执行状态