synchronized关键字详解
synchronized关键字详解
1. 基本概念与使用方式
- 作用:确保多个线程在访问共享资源时的互斥性,防止数据不一致。
- 使用方式:
- 修饰实例方法:锁对象为当前实例(
this
)。public synchronized void instanceMethod() {// 同步代码 }
- 修饰静态方法:锁对象为类的
Class
对象。public static synchronized void staticMethod() {// 同步代码 }
- 同步代码块:需显式指定锁对象。
public void blockMethod() {synchronized (lockObject) {// 同步代码} }
- 修饰实例方法:锁对象为当前实例(
2. 锁的特性
- 对象锁与类锁:
- 实例方法锁:不同实例的锁互不干扰。
- 静态方法/类锁:所有实例共享同一把锁。
- 可重入性:同一线程可重复获取同一把锁,避免死锁。
public