线程的基本状态以及状态之间的关系?

在这里插入图片描述
除去起始(new)状态和结束(finished)状态,线程有三种状态,分别是:就绪(ready)、运行(runnin g)和阻塞(blocked)。其中就绪状态代表线程具备了运行的所有条件,只等待 CPU 调度(万事俱备,只欠东 风);处于运行状态的线程可能因为 CPU 调度(时间片用完了)的原因回到就绪状态,也有可能因为调用了线 程的 yield 方法回到就绪状态,此时线程不会释放它占有的资源的锁,坐等 CPU 以继续执行;运行状态的线程可 能因为 I/O 中断、线程休眠、调用了对象的 wait 方法而进入阻塞状态(有的地方也称之为等待状态);而进入阻 塞状态的线程会因为休眠结束、调用了对象的 notify 方法或 notifyAll 方法或其他线程执行结束而进入就绪状 态。注意:调用 wait 方法会让线程进入等待池中等待被唤醒, notify 方法或 notifyAll 方法会让等待锁中的线程 从等待池进入等锁池,在没有得到对象的锁之前,线程仍然无法获得 CPU 的调度和执行。

猜你喜欢

转载自blog.csdn.net/weixin_40197494/article/details/84307828