在 Java 并发编程中,"锁" 是解决多线程安全问题最核心的工具。常见的锁包括:synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock、Semaphore、CountDownLatch / CyclicBarrier 等。
2026/8/12大约 17 分钟
在 Java 并发编程中,"锁" 是解决多线程安全问题最核心的工具。常见的锁包括:synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock、Semaphore、CountDownLatch / CyclicBarrier 等。
synchronized 是一种内置的 Java 关键字,用于实现线程同步。
当一个线程进入 synchronized 块或方法时,它会获得锁,而这把锁直接存储在 Java对象头中,从而阻止其他线程同时进入相同的 synchronized 块或方法,确保共享资源的互斥访问。
扩展:Java 对象头简述
以 Hotspot 虚拟机为例,对象头主要包含两部分:
- Mark Word:默认存储对象的 HashCode、分代年龄和锁标志位信息。它是一个非固定的数据结构,会根据对象的状态复用存储空间,运行期间存储的数据会随着锁标志位的变化而变化。
- Klass Pointer:对象指向它的类元数据的指针,虚拟机通过这个指针确定该对象属于哪个类的实例。
Java 对象头结构