前言
最近看到很多人都在讨论多线程的问题,于是写出了这篇博客,希望可以帮到正在学习和使用这块的朋友们,首先我们先看看两个图(两个图都来自其他码农的分享)。
这两个图是一样的逻辑,这里一起罗列出来,下面让我们用语句来简单描述下两个图:
sleep 让线程从 【running】 → 【阻塞态】 时间结束/interrupt → 【runnable】
wait 让线程从 【running】 → 【等待队列】notify → 【锁池】 → 【runnable】
当我们看到这个图的时候首先会看到线程的几种状态,下面让我们先来分别说明一下:
线程共包括一下5种状态:
1. 新建、初始状态(New) :线程对象被创建后就进入了新建状态,Thread thread = new Thread();
2. 就绪(Runnable):也被称之为“可执行状态”,当线程被new出来后,其他的线程调用了该对象的start()方法,即thread.start(),此时线程位于“可运行线程池”中,只等待获取CPU的使用权