Lock锁
来源:互联网 发布:英语课上配音软件 编辑:程序博客网 时间:2024/06/06 18:30
Lock接口
锁是用来控制多个线程访问共享资源的方式
一般来说,锁能够防止多个线程同时访问共享资源(但也有的锁可以允许多个线程访问共享资源,比如读写锁)
在Lock接口出现前,靠synchronized实现锁功能,但是在Java5之后并发包中新增了Lock接口(及其相关实现类)来实现锁功能.
它提供了与synchronized类似的同步功能,只是Lock需要显示的获取和释放锁,虽然缺少了隐式获取释放锁的便捷性,但是拥有了获取与释放锁的可操作性,可中断的获取锁以及超时获取等多种synchronized不具备的同步特性
大体上使用synchronized代码量更少,出错可能性低,因此通常只有在处理特殊问题时,才使用显式的Lock对象.
使用也很简单,如下
Lock lock = new ReentrantLock();lock.lock();try {} finally { lock.unlock();}
- 在finally块中释放锁,是为保证在获取到锁之后,最终能够被释放。这也是比synchronized好的地方,即使某些事务失败了,finally字句的unlock()将系统维护在正确状态
不要将获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常,异常抛出的同时,也会导致锁无故释放。
Lock接口提供的synchronized所不具备的主要特性如下表
Lock是一个接口,它定义了锁获取和释放的基本操作,API如表
这里只是简单介绍一下Lock接口的API
Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程访问控制的
阅读全文
0 0
- Lock锁
- 锁+LOCK
- Lock锁
- lock锁
- 锁 Lock
- 锁Lock
- Lock锁
- SQL锁问题 Lock
- 11.3线程----锁Lock
- Lucene3中的Lock锁
- Lock线程锁
- 线程锁Lock
- Android锁Wake Lock
- JVM锁机制-Lock .
- 11.3线程 锁Lock
- Oracle Lock 锁
- 锁 synchronized和Lock
- 自旋锁 Spin Lock
- python从控制台接收输入创建二叉树
- 挖掘布尔关联法则发现频繁项集的Apriori算法
- Javascript 异步编程方法
- 第五届图灵杯1869
- UVa 11401 Triangle Countin(找规律)
- Lock锁
- jsp 之 入门 jsp代码块
- 计算机网络(一)
- 第五届图灵杯1855
- nodeJS实现方法的同步效果(去异步)
- 数据结构实验之图论八:欧拉回路
- codeforce_894C_给你原序列所有连续子序列的GCD从小到大,求原序列_构造
- anaconda的基本使用方法
- java制作输入界面