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()唤醒全副