Files
Hui-s-notebook/Java 并发包中锁原理剖析.md
2023-09-10 10:50:53 +08:00

823 B
Raw Permalink Blame History

LockSupport 工具类

挂起和唤醒线程,使用 Unsafe 类实现的

  1. void park ()
  2. void unpark ()
  3. void parkNanos (long nanos)
  4. park (Object blocker)
  5. void parkNanos (Object blocker, long nanos)
  6. void parkUntil (Object blocker, long deadline)

抽象同步队列 AQS 概述

AbstractQueuedSynchronizer 实现同步器的基础组件

ReentrantLock

可重入的独占锁,同时只能有一个线程获取该锁,其它线程阻塞放入该锁的 AQS 阻塞队列中

获取锁

  1. void lock
  2. void lockInterruptibly ()
  3. boolean tryLock ()

释放锁

  1. void unlock ()

ReentrantReadWriteLock

采用读写分离策略,允许多个线程可以同时获取读锁

StampedLock

提供三种读写模式锁

  • 写锁 writeLock
  • 悲观读锁 readLock
  • 乐观读锁 tryOptimisticRead