在Java中,线程的同步是通过一系列机制来实现的,这些机制确保多个线程能够安全地访问共享资源,从而避免数据竞争和不一致的问题。以下是Java中线程同步的主要方法和机制:
1. synchronized关键字
synchronized
是Java中最基本的线程同步机制。它可以用来修饰方法或代码块,确保同一时间只有一个线程可以执行同步的代码块或方法。
修饰方法:
public synchronized void synchronizedMethod() {
// 同步代码
}
修饰代码块:
public void someMethod() {
synchronized (this) {
// 同步代码块
}
}
在同步代码块中,this
作为锁对象,也可以替换为其他任何对象作为锁。
2. volatile关键字
volatile
关键字用于确保变量的可见性,即当一个线程修改了一个被volatile
修饰的变量的值,其他线程能够立即看到这个修改。然而,volatile
不保证原子性,因此它通常用于确保单个变量的可见性,而不是复杂的复合操作。
public volatile int sharedVariable;