码迷,mamicode.com
首页 > 其他好文 > 详细

lock与sychronized关键字

时间:2017-05-17 21:00:26      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:apple   放弃   使用   成功   ted   final   nal   zed   异常   

1. lock与sychronized关键字的区别

(1) Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现。
(2)Lock可以选择性的获取锁,如果一段时间获取不到,可以放弃。synchronized不行,会一根筋一直获取下去。 借助Lock的这个特性,就能够规避死锁,synchronized必须通过谨慎和良好的设计,才能减少死锁的发生。
(3)synchronized在发生异常和同步块结束的时候,会自动释放锁。而Lock必须手动释放, 所以如果忘记了释放锁,一样会造成死锁(为了保证释放的执行,往往会把unlock() 放在finally中进行)。

2. trylock方法

(1)synchronized 是不占用到手不罢休的,会一直试图占用下去。
(2)与 synchronized 的钻牛角尖不一样,Lock接口还提供了一个trylock方法。trylock会在指定时间范围内试图占用,占成功了,就继续。 如果时间到了,还占用不成功,扭头就走。

3. 线程交互

(1)使用synchronized方式进行线程交互,用到的是同步对象的wait,notify和notifyAll方法
(2)Lock也提供了类似的解决办法,首先通过lock对象得到一个Condition对象,然后分别调用这个Condition对象的:await, signal,signalAll 方法

lock与sychronized关键字

标签:apple   放弃   使用   成功   ted   final   nal   zed   异常   

原文地址:http://www.cnblogs.com/changna1314/p/6869301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!