一、問題描述:
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();
不能混用!!!