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

标签: threadclassstringobjectjvmc
10123人阅读 评论(0) 收藏 举报
分类:

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

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

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

第一个:

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

运行效果如下:

第二个:

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

运行效果如下:

第三个:

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

运行效果如下:

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

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

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1721147次
    • 积分:16176
    • 等级:
    • 排名:第640名
    • 原创:243篇
    • 转载:19篇
    • 译文:1篇
    • 评论:630条
    新浪微博
    最新评论
    我的应用