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 方法

最新文章

  1. MonkeyTest简单实用介绍
  2. Android studio 多渠道打包
  3. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文
  4. 升級 Centos 6.5 的 php 版本
  5. C#----Graphics中部分方法的使用和理解
  6. centos 7 /etc/rc.local 开机不执行的问题
  7. Spring源码学习(二)AOP
  8. C语言第4天循环,流程控制。
  9. redis模块
  10. 【原创】省市二级联动纯javascript
  11. java使用POI jar包读写xls文件
  12. sae后台管理端的js,daterangepicker使用
  13. java的注释
  14. MSA2312 enclosure 闪断后
  15. SLogViewer下载及使用说明
  16. poj 2955"Brackets"(区间DP)
  17. unity打aar包工具
  18. PHP+Mysql学习笔记
  19. Deeplab v3+的结构代码简要分析
  20. HanLP代码与词典分离方案与流程

热门文章

  1. 跟着Nisy一起学习C语言
  2. MVC缓存(一)
  3. jquery点击按钮或链接,第一次与第二次执行不同的事件
  4. C#PrintDocument打印尺寸调整
  5. 关于springmvc中常用的注解,自己也整理一下
  6. 【SSH网上商城项目实战23】完成在线支付功能
  7. html5 转义实体字符 元数据 跳转 全局属性 id class lang style
  8. Python删除开头空格
  9. Spring Boot 开发入门
  10. FineReport和泛微OA(Ecology)的单点登录集成方案