多线程-wait - notify

版权声明:歡迎转載 https://blog.csdn.net/jinjianghai/article/details/90447970

wait() 方法会把自动释放Synchronized
notify() 方法会从wait状态的线程中随机叫醒一个
notifyAll() 方法会叫醒所有处理wait状态的线程

package com.xbb.thread;

public class WaitNotify {

    private volatile int signle = 0;

    public static void main(String[] args) throws Exception{
        WaitNotify waitNotify = new WaitNotify();
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (waitNotify) {
                    try {
                        System.out.println("修改方法 - 进入");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    waitNotify.setSignle(1);
                    waitNotify.notify();
                    System.out.println("修改方法 - 放行");
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (waitNotify) {
                    System.out.println("修改方法 - 读取");
                    while (waitNotify.getSignle() != 1) {
                        try {
                            waitNotify.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(waitNotify.getSignle());
                }
            }
        }).start();
    }
    
    public int getSignle() {
        return signle;
    }
    public void setSignle(int signle) {
        this.signle = signle;
    }
}

猜你喜欢

转载自blog.csdn.net/jinjianghai/article/details/90447970