关于java:java学习笔记8线程状态

39次阅读

共计 709 个字符,预计需要花费 2 分钟才能阅读完成。

WAITING 期待唤醒状态( 线程之间的通信

进入 Timewaiting(计时期待)有两法:

  1. sleep(),线程睡醒后进入 Runable/ 阻塞状态
  2. wait(long m),完结后没有被唤醒,会主动醒来

只有锁对象能力调用 wait 办法和 notify 办法

public class WaitAndNotify {public static void main(String[] args) {
        // 创立锁对象
        Object obj = new Object();

        // 顾客线程
        new Thread() {
            @Override
            public void run() {
                // 保障 wait 和 notify 只能有一个执行
                synchronized (obj) {System.out.println("买多少包子");
                    // 调用 wait 办法, 因为父类没有 throw 异样,所以只能用 try...catch
                    try {obj.wait();
                    } catch (InterruptedException e) {e.printStackTrace();
                    }
                    // 唤醒之后执行的代码
                    System.out.println("包子曾经做好,开吃");
                }
            }
        }.start();

        // 老板线程
        new Thread() {
            @Override
            public void run() {
                try {Thread.sleep(5000);
                } catch (InterruptedException e) {e.printStackTrace();
                }

                synchronized (obj) {System.out.println("曾经做好了");
                    obj.notify();}
            }
        }.start();;}
}

唤醒(2 法):

  1. notify() 唤醒单个
  2. notifyAll() 唤醒全副

正文完
 0