目录
- 同步机制 加锁
- synchronized 关键字
- Lock 接口
- 原子操作类
- 并发安全的集合类
- 线程局部变量
- volatile关键字
同步机制 加锁
synchronized 关键字
对方法或代码块加锁(在JVM层面)
当我们使用synchronized时,Java虚拟机(JVM)会为每个被同步的对象维护一个锁(或称为监视器锁)。
这个锁有四种状态:从级别由低到高依次是:无锁、偏向锁,轻量级锁,重量级锁,用于控制多线程对共享资源的访问。
Lock 接口
java.util.concurrent.locks 包中提供了比 synchronized 更灵活的锁机制,例如 ReentrantLock,支持中断、超时以及公平锁等特性
原子操作类
Atomic包下的原子类:: AtomicInteger、AtomicLong、AtomicBoolean 等提供了线程安全的原子操作方法,避免了加锁带来的阻塞,通常使用CAS (Compare-And-Swap) 算法实现
并发安全的集合类
线程局部变量
volatile关键字
volatile 关键字用于保证变量的可见性,确保一个线程对变量的修改对其他线程是可见的,同时保证了变量的有序性,但它不能保证对变量的复合操作是原子性的。