Lock接口

Lock

第一节 概述

Lock 提供了和 synchronized 类似的同步功能,需要显式的获取和释放锁,缺少了便捷性,但增加了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。


第二节 创建和使用Lock

1
2
3
4
5
6
7
8
Lock lock = new ReentrantLock();
lock.lock();
try{
//不要将获取锁的过程放入try块,若获取锁时发生异常,异常抛出也会导致锁的释放
}finally {
//保证释放
lock.unlock();
}

第三节 Lock接口源码

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

1
2
3
4
5
6
7
8
public interface Lock {
void lock();
void lockInterruptibly() throws InterruptedException;
boolean tryLock();
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
void unlock();
Condition newCondition();
}

Lock 的API如下图所示:

Lock的API


第四节 Lock具备synchronized没有的特性

Lock接口提供的synchronized关键字不具备的主要特性


参考博客和文章书籍等:

《Java并发编程的艺术》

因博客主等未标明不可引用,若部分内容涉及侵权请及时告知,我会尽快修改和删除相关内容