Lock锁

简介: Lock锁

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所不具备的主要特性如下表

1.png

Lock是一个接口,它定义了锁获取和释放的基本操作,API如表

1.png

这里只是简单介绍一下Lock接口的API

Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程访问控制的



目录
相关文章
|
Java 程序员 API
【Lock锁的使用与原理】
【Lock锁的使用与原理】
177 0
|
数据可视化 Java
lock锁和死锁
lock锁和死锁
|
SQL 关系型数据库 MySQL
数据库并发控制、悲观锁(Pessimistic Lock)、乐观锁(Optimistic Lock)、排他锁(Exclusivelocks X锁)、共享锁(Shared Lock S锁)
数据库并发控制、悲观锁(Pessimistic Lock)、乐观锁(Optimistic Lock)、排他锁(Exclusivelocks X锁)、共享锁(Shared Lock S锁)
数据库并发控制、悲观锁(Pessimistic Lock)、乐观锁(Optimistic Lock)、排他锁(Exclusivelocks X锁)、共享锁(Shared Lock S锁)
|
安全 Java
多线程详解p18、Lock锁
多线程详解p18、Lock锁
|
安全 Java
Lock 解析,如何避免死锁?
Lock 解析,如何避免死锁?
Lock 解析,如何避免死锁?
|
安全 Java 调度
多线程同步问题,锁Lock,synchronized
线程同步机制 并发:同一个对象被多个线程同时操作 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候我们就需要线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个县城再使用 线程同步形成条件:队列+
|
Java
多线程--Lock锁
多线程--Lock锁
249 0
多线程--Lock锁
深入学习Lock锁(3)——重入锁ReentrantLock
参考资料《Java并发编程的艺术》
1422 0