假设一个生产者生产一个产品,两个消费者A,B去取这个商品. 使用if: A去取商品,发现空,于是等待... B去取商品,发现空,于是等待... 生产者生产商品,唤醒他们 B先争到锁,从wait()后执行代码,跳出if,取走商品. A后争到锁,从wait()处出发,跳出if,发现竟然没东西,取东西失败,越界. 结果 改用while A去取商品,发现空,于是等待... B去取商品,发现空,于是等待... 生产者生产商品,唤醒他们 B先争到锁,从wait()后执行代码,再次执行while,发现不必进入