在JDK1.5之前,解决生产者和消费者问题,
用的是synchronized同步+while+notify();
但是这种方法很不安全,很容易让线程全部陷入无限等待状态。
于是我们改用notiyfyAll();来解决。
这样虽然解决了安全问题,但还是存在不足和安全隐患。
notifyAll方法唤醒了线程池中全部的线程,
这并不是我们想要的!
而且,同步套同步很容易发生死锁!
在JDK1.5中提供了显示的锁机制,完美的解决了上述问题。
它既可以做到只唤醒对方线程,而不唤醒己方线程,
又能够让一个锁绑定多个对象!
下面我们首先来看看JDK1.5新特性吧!
还是用2个生产者线程和2个消费者线程来展示。
|
|