1.Lock()接口

2.队列同步器AbstractQueuedSynchronizer

3.重入锁ReentrantLock

支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。

4.读写锁ReentrantReadWriteLock
之前提到锁(如Mutex和ReentrantLock)基本都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。 

5.LockSupport工具

Java中的锁_java

6.Condition接口

当调用await()方法后,当前线程会释放锁并在此等待,而其他线程调用Condition对象的signal()方法,通知当前线程后,当前线程才从await()方法返回,并且在返回前已经获取了锁。