signed

QiShunwang

“诚信为本、客户至上”

Java中synchronized和ReentrantLock之外的锁

2021/5/14 20:05:27   来源:

CountDownLatch(门栓)
zookeeper连接时经常用
countDownLatch.countDown()参数递减
countDownLatch.await()参数为0时,放行

CyclicBarrier(栅栏)
cyclicBarrier.await
人齐就发车、多个线程协同执行,等所有的线程都拿到返回结果,再执行下一步

Phaser(好多排小栅栏,可以进行过滤)
phaser.arriveAndAwaitAdvance()(去栅栏处等,线程齐后,进行下一步)
phaser.arriveAndDeregister()(退场)

ReadWriteLock(读写锁)
共享锁(读锁)(乐观锁)
排他锁(写锁)(悲观锁)

Semaphore(信号灯,限流、允许多少个线程可以同时执行)
semaphore.acquire()(获得(获得锁))
semaphore.release()(复位,(释放锁))

Exchanger(交换器)
exchanger.exchange()

LockSupport.park()(停止)
LockSupport.unpark()(放行)