目录
在 Java 并发编程中,synchronized
是一个非常重要的关键字,用于实现线程同步,保证在同一时刻只有一个线程可以访问被同步的代码块或方法,从而避免多线程带来的数据不一致等问题。同时,Java 虚拟机(JVM)为了提高ynchronized
的性能,引入了锁升级机制。下面我们就来详细介绍ynchronized
的使用和锁升级过程。
一、synchronized 的使用方式
(一)修饰普通方法
当synchronized
修饰一个普通方法时,锁对象是当前对象(this
)。也就是说,当一个线程进入该方法时,会自动获取当前对象的锁,其他线程想要进入该方法,必须等待当前线程释放锁。例如:
public class SynchronizedExample {
public synchronized void synchronizedMethod() {
// 线程同步的代码逻辑
System.out.println("线程 " + Thread.currentThread().getName() + " 进入同步方法");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.