上篇博客开始,我们接触了一些有关Java多线程的基本概念。这篇博客开始,我们就正式的进入了Java多线程的实战演练了。实战演练不仅仅是贴代码,也会涉及到相关概念和术语的讲解。
线程的状态
程的状态分为:新生,可运行,运行,阻塞,死亡5个状态。如下图:
状态说明:
新生(new):线程对象刚创建,但尚未启动。
可运行(Runnable):线程创建完毕,并调用了start()方法,虽然调用了start(),但是并不一定意味着线程会立即执行,还需要CPU的时间调度。线程此时的状态就是可运行状态。
运行:线程等到了CPU的时间调度,此时线程状态转为运行状态。
阻塞(Blocked):线程由于某种原因被阻碍了,但是此时线程还处于可运行状态。调度机制可以简单的跳过它,不给它分配任何CPU时间。
其他状态比较简单,阻塞状态是其中比较有意思的。造成线程阻塞的原因有:
调用sleep(毫秒数),使线程进入"睡眠"状态。在规定的毫秒数内,线程不会被执行,使用sleep()使线程进入睡眠状态,
网友评论