使用wait notify 报错 IllegalMonitorStateException

 

解决办法:相关的wait及notify需要在synchronized修饰的方法下执行

Object object = new Object();
new Thread(() -> {
    for (int i = 0; i < 10; i++) {
        try {
            synchronized (object) {
                object.wait();
            }
            System.out.println("wait end:" + i);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}).start();
new Thread(() -> {
    for (int i = 0; i < 10; i++) {
        System.out.println("notify start:" + i);
        synchronized (object) {
            object.notify();
        }
    }
}).start();

 

posted @ 2022-07-19 12:37  蜜铀  阅读(43)  评论(0编辑  收藏  举报