1. 基本概念
<1> 从Java5中,开始提供了强大的线程同步机制 ----> 使用显式定义的同步锁对象来实现
<2> java.util.concurrent.locks.Lock接口: 控制多个线程对共享资源进行访问的工具
<3> 该接口的主要实现类是 ReentrantLock类,该类拥有与synchronized 相同的并发性。
在线程安全控制中,经常使用ReentrantLock类显式加锁和释放锁
2. 常用方法
ReentrantLock() | 使用无参方式,构造对象 |
void lock() | 获取锁 |
void unlock() | 释放锁 |
3. 使用示例 (AccountRunnableTest.java)
4. 与synchronized方式的比较
<1> Lock是显式锁,需要手动实现开启和关闭操作,而synchronized是隐式锁,执行锁定代码后自动释放
<2> Lock只有:同步代码块方式的锁,而synchronized有:同步代码块方式 和 同步方法 两种锁
<3> 使用Lock锁方式时,java虚拟机将花费较少的时间来调度线程,因此性能更好