gpt4 book ai didi

java - synchronized block 是如何实现同步的

转载 作者:行者123 更新时间:2023-11-29 05:25:10 25 4
gpt4 key购买 nike

在 Java 中,如果一个方法被 synchronized 关键字限定,它通过操作对象 monitor 来确保这个方法在任何时候都可以被单个线程访问,这样当线程进入同步方法时,它会锁定 monitor,以便所有其他线程知道它已被另一个线程锁定。

我这里的问题是synchronized block 是如何实现同步的,我的意思是没有monitor与这个synchronized block 关联,那么它使用什么指示来确定这个 block 是否已经在执行中?我在这里迷路了。

最佳答案

每个对象都有一个与之关联的隐式锁。当进入同步块(synchronized block)时,进程必须在继续之前获取对象的锁。退出同步块(synchronized block)时返回锁。

public class SomeClass {
private Object mutex = new Object();
public static synchronized void method1() {
// static methods aquire the class level lock for SomeClass
}
public synchronized void method2() {
// aquire the lock associated with 'this' instance (of SomeClass)
}
public void method3() {
synchronized (mutex) {
// aquire the lock of the mutex object
}
}
}

关于java - synchronized block 是如何实现同步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com