Java 多线程编程中的核心同步机制
在 Java 中,synchronized 是一个关键字,用于控制多个线程对共享资源的访问,确保线程安全。
它通过加锁机制,使得同一时刻只有一个线程可以执行被 synchronized 修饰的代码块或方法。
this)。public class Counter {
private int count = 0;
public synchronized void increment() {
count++; // 线程安全
}
public int getCount() {
return count;
}
}
public class Utility {
private static int counter = 0;
public static synchronized void add() {
counter++; // 锁的是 Utility.class
}
}
public class BankAccount {
private double balance;
private final Object lock = new Object();
public void deposit(double amount) {
synchronized (lock) {
balance += amount;
}
}
}
synchronized 是可重入锁,同一个线程可以多次获取同一把锁。synchronized 块中调用可能阻塞的方法(如 I/O),以免造成死锁或性能瓶颈。synchronized 做了大量优化(如偏向锁、轻量级锁)。
很多人误写为 synchronize,但正确拼写是 synchronized。
Java 中没有 synchronize 关键字,只有 synchronized。