wait方法没有满足条件也被唤醒,
四个线程中,两个作为生产者(1, 3),两个作为消费者(2,4),1号生产者++, 挂起后,3号线程抢占到,满足条件,被挂起,3号线程代码停止在wait处,1号线程又抢占到资源,满足条件,被wait()挂起,然后3号又抢占到资源,此时,继续从wait()代码处继续向下执行,所以代码出现问题。
解决方法: while 代替if
wait方法没有满足条件也被唤醒,
四个线程中,两个作为生产者(1, 3),两个作为消费者(2,4),1号生产者++, 挂起后,3号线程抢占到,满足条件,被挂起,3号线程代码停止在wait处,1号线程又抢占到资源,满足条件,被wait()挂起,然后3号又抢占到资源,此时,继续从wait()代码处继续向下执行,所以代码出现问题。
解决方法: while 代替if