监视器锁(Monitor Lock)

监视器锁(Monitor Lock)是Java中用于同步和互斥控制的机制,也称为内部锁或监视器。每个对象在Java中都有一个对应的监视器锁。

当遇到synchronized代码块或方法时,它会获取被同步对象的监视器锁。同一时间只有一个线程可以持有某个对象的监视器锁。其他试图获取相同锁的线程将被阻塞,直到锁被释放。

监视器锁确保只有一个线程能够执行与该锁相关联的synchronized代码块或方法。它提供了互斥性,防止多个线程同时访问共享资源,可能导致数据损坏或不一致性。

以下是一个示例,以说明监视器锁的使用:

public class MyClass {
    private int count = 0;
    
    public synchronized void increment() {
        // 同步方法
        // 同一时间只有一个线程可以执行这个方法
        count++;
    }
}

在上述代码中,使用关键字synchronized修饰了increment方法。该方法关联的监视器锁是this,确保在执行increment方法时只有一个线程可以操作count变量,保持共享资源的一致性。

需要注意的是,监视器锁是可重入的,也就是同一个线程可以多次获取同一个锁而不会产生死锁。可重入锁允许线程多次进入同步代码块或方法,只要它已经持有该锁。

简而言之,监视器锁是Java中线程同步的基本概念,提供了同步和互斥控制。它确保只有一个线程可以执行与特定锁对象相关联的同步代码,防止并发访问共享资源,保证线程安全的操作。

猜你喜欢

转载自blog.csdn.net/qq_39208536/article/details/131473677