黑马程序员技术交流社区
标题:
线程中synchronized和Lock的一个小问题
[打印本页]
作者:
李平
时间:
2012-5-29 18:18
标题:
线程中synchronized和Lock的一个小问题
线程中有synchronized和Lock两种方式,synchronized中只能用notifyAll来唤醒等待中的所有线程,而lock中可以定义多个Condition 来分别唤醒生产者或者消费者线程。这两种方式具体有什么异同?以后用的时候最好用哪个?
作者:
秦冲
时间:
2012-5-29 18:29
老毕视频其实讲的非常多了,打个比方:生产者与消费者,老的同步代码块和同步方法,你没法由一方唤醒另一方,你只能把在等待的全部唤醒。
JDK5.0中提供了多线程升级解决方案。 显示的锁机制。 将同步synchronized替换成了lock操作
将Object中的wait,notify,notifyAll替换成了Condition对象
该对象可以通过lock锁进行获取
这样就可以实现本方法只唤醒对方的操作。
总结:5.0之后提供了显示的锁机制,以及显示的锁对象上的等待唤醒操作机制 ,同时把等待唤醒进行了封装。一个锁
可以对应多个Condition,之前一个锁对应一个wait,notify。
当你要进行线程同步并且线程通信时,建议使用显示的锁机制,新特性,人家都是升级的解决方案了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2