java如何实现线程安全,synchronized和lock的区别,可重入锁 20

 我来答
战戳310
2017-09-04 · TA获得超过219个赞
知道答主
回答量:430
采纳率:0%
帮助的人:155万
展开全部

一、synchronized和lock的用法区别


synchronized:在需要同步的对象中加入此控制,synchronized在方法上,也在特定代码块中,括号中表示需要锁的对象。


lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。


二、synchronized和lock用途区别


synchronized原语和ReentrantLock在一般情况下没有什么区别,但是在非常复杂的同步应用中,请考虑使用ReentrantLock,特别是遇到下面2种需求的时候。


  1. 某个线程在等待一个锁的控制权的这段时间需要中断

  2. 2.需要分开处理一些wait-notify,ReentrantLock里面的Condition应用,能够控制notify哪个线程

  3. 3.具有公平锁功能,每个到来的线程都将排队等候

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式