1. Lock 的简介及使用
Lock完全用Java写成,在java这个层面是无关JVM实现的,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();
2. 实现Lock接口的基本思想(AQS、CAS)
AQS :
AbstractQueuedSynchronized 核心概念:一个是表示(锁)状态的变量、一个是队列