Java 中的锁——Lock接口
2016-07-12 14:37
295 查看
Java SE5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能。虽然它少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。
使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。当然,这简化了同步的管理,可是扩展性没有显示的锁获取和释放来的好。
Lock接口提供的synchronized关键字所不具备的主要特性如下:
使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。当然,这简化了同步的管理,可是扩展性没有显示的锁获取和释放来的好。
Lock接口提供的synchronized关键字所不具备的主要特性如下:
特性 | 描述 |
尝试非阻塞地获取锁 | 当前线程尝试获取锁,如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁 |
能被中断地获取锁 | 与synchronized关键字不同,获取到锁的线程能够响应中断,当获取到锁的线程被中断时,中断异常将会被抛出,同时锁会被释放 |
超时获取锁 | 在制定的截止时间之前获取锁,如果截止时间到了仍旧无法获取锁,则返回 |
相关文章推荐
- Java中的装箱 拆箱
- java.lang.NumberFormatException: multiple points已解决
- java中强、软、弱和虚引用应用
- 用JAVA后台判断一个URL是否有效
- 在SpringMVC中获取request对象的几种方式
- java反射机制
- Java接口中的成员变量为什么必须声明为public static final?
- Java 调用bat文件并传入参数,并且不出现cmd的黑框框
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
- Java大数类BigDecimal及八种舍入模式的介绍
- 自定义的RPC的Java实现
- java代码如何读取properties文件
- 堆排序--java
- 详解java中&&和&
- java_UML:继承/泛化、实现、依赖、关联、聚合、组合的联系与区别 (2016-07-12)
- jersey + spring 参数接收解析
- java基础七:枚举
- MyEclipse 快捷键1(CTRL)
- Spring和Mybatis整合时无法读取properties的处理方案
- java导出和读取excel数据