第二部分 线程的等待和唤醒

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cuiran/article/details/6134676

从这个图中可以看出,等待状态是一种特殊的状态。使线程陷入等待实际上是暂时剥夺线程当前拥有的CPU时间片和获取CPU时间片的资格,使其返回到就绪状态。除非被唤醒,否则等待时间已满,该线程将一直等待。不会被JVM线程调度器选中并赋予CPU时间片。处于等待的线程一旦恢复执行,与其他处于就绪状态被线程调度器选中的线程不同,将从上次结束执行的断点处开始执行,而非从头开始。

 使线程中断运行,返回就绪状态的手段是调用java.lang.Object对象的wait()方法;唤醒处于等待状态的线程的手段是调用java.lang.Object对象的notify()方法

为了加深理解,下面就通过具体例子来说明线程等待和唤醒

第一个:

通过继承Thread来创建子线程。

运行效果如下:

第二个:

通过实现Runnable接口来创建子线程

运行效果如下:

第三个:

通过实现Runnable,又通过Object对象的notifyAll()方法一次性唤醒多个同一个对象创造的线程。

运行效果如下:

总结:1).利用Thread.sleep().使线程开始休眠指定的时间,以便让各个子线程进入等待状态。

      2).synchronized同步锁的使用。这一块在后面文章中会加以解说。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页