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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理