wait、notify、notifyAll

发布时间 2023-04-24 14:41:04作者: 帅气的涛啊

介绍

wait 方法前提需要拥有锁。使用wait方法后,释放锁进行等待队列。

notify 方法从等待队列移除一个元素。

notifyAll 将等待队列中元素全部进行移出。

注意:notify、notifyAll 会等代码执行完才会释放锁

@Test
    public void threadTest() {
        
        new Thread(() -> {
            synchronized (this) {
                System.out.println("A-start");
                try {
                    wait();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("A-over");
            }
        }).start();
        
        new Thread(() -> {
            synchronized (this) {
                System.out.println("B-start");
                notifyAll();
                System.out.println("B-over");
            }
        }).start();

    }