Java并发编程系列04:解决多线程安全-Lock
Lock常用的方法有:
尝试获取锁,获取成功则返回,否则阻塞当前线程
void lock();尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛出异常
void lockInterruptibly() throws InterruptedException;尝试获取锁,获取锁成功则返回true,否则返回false
boolean tryLock();尝试获取锁,若在规定时间内获取到锁,则返回true,否则返回false,未获取锁之前被中断,则抛出异常
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;释放锁
void unlock();返回当前锁的条件变量,通过条件变量可以实现类似notify和wait的功能,一个锁可以有多个条件变量
Condition newCondition();
Lock类实际上是一个接口,我们在实例化的时候实际上是实例化实现了该接口的类Lock lock = new ReentrantLock();。
Lock类的用法:通过Lock对象lock,用lock.lock来加锁,用lock.unlock来释放锁。在两者中间放置需要同步处理的代码。
import java.util.concurrent.locks.Lock;
import java.util.concurrent.l