线程的生命周期 / 状态(6种)
线程创建后会处于新建状态,调用 start() 方法后进入就绪状态,就绪状态的线程获得CPU时间片后进入运行状态。当线程执行 wait() 方法后进入等待状态,而超时等待状态相当于在等待状态的基础上增加了超时限制,比如通过 sleep 或 wait 方法可以将线程置于超时等待状态。当超时时间到达后,线程会返回到运行状态。线程如果没有抢到到锁,就会进入阻塞状态。线程执行完毕后进入终止状态。
调用notify()方法后,线程会从等待状态转变为就绪状态(ready state),而不是直接进入运行状态。
需要注意的是,调用notify()方法只是唤醒等待该对象锁的一个线程,具体唤醒哪个线程是不确定的,取决于操作系统的调度算法。如果希望唤醒所有等待该对象锁的线程,可以使用notifyAll()方法。