天天看點

Exception in thread “A“ java.lang.IllegalMonitorStateException

一、問題描述:

Exception in thread “A” java.lang.IllegalMonitorStateException

at java.lang.Object.notify(Native Method)

at com.atguigu.AirCondition.increment(Consumer.java:24)

at com.atguigu.Consumer.lambda$main$0(Consumer.java:56)

at java.lang.Thread.run(Thread.java:748)

lock.lock();
            while (count!=0){
                condition.await();
//                lock.wait();
//                this.wait();
//ReentrantLock使用了wait(Object)
           

二:問題分析

synchronized和ReentrantLock本質是不一樣的,兩個同時使用必然出問題;

package java.lang;
vs
package java.util.concurrent.locks;
           

三、問題解決:

使用

private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition();
condition.await();
           
不能混用!!!