黑马程序员技术交流社区
标题:
Lock机制与原始的wait,notify的比较
[打印本页]
作者:
Nemo
时间:
2015-6-11 16:38
标题:
Lock机制与原始的wait,notify的比较
简单来看Lock更符合面向对象的编程思想,也就是将锁封装成对象,因为对于锁的各种操作(持有锁,释放锁等),都应该是锁这个事物最清楚,就好像开门这个动作时门最清楚应该定义在门类中一样。
同时使用原始的wait,notify机制时,我们不能确定notify唤醒的线程是哪一个或者说是哪一类,例如在生产者,消费者的问题中,如果存在多个生产者,多个消费者,那么使用wait,notify机制就会导致生产多个消费一个,或者生产一个却消费了多次的情况发生,究其原因就是多线程的随机性,也就是说当一个生产者线程结束时,我们无法保证唤醒的是一个消费者,如果唤醒了错误的线程,那么之后就会发生错误。
而是用Lock机制就可以很简单的解决这个问题,首先定义一个锁,在这个锁上我们上两个锁孔(也就是Condition对象),生产者对应一个锁孔A,消费者对应锁孔B,当生产者运行时,它总是将自己冻结在锁孔A上,而唤醒一个锁孔B上的线程,那么这个被唤醒的线程肯定是消费者,反之亦然。
这就很方便简单的解决了多个生产者消费者中出现的问题。:victory::victory:
作者:
Nemo
时间:
2015-6-11 16:40
欢迎来指教的大神们啊。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2