gpt4 book ai didi

Java同步/锁定

转载 作者:行者123 更新时间:2023-12-02 09:09:05 28 4
gpt4 key购买 nike

我对 Java 并发性比较陌生(还没有阅读 JCIP,但它在我的列表中!)并且我有一个关于锁定行为的问题。具体来说,Java 是锁定对象的引用,还是锁定对象本身?

代码示例(不是 sscce,因为我不知道如何在实践中演示此行为):

static final Object lockA = new Object();

public void method1() {
synchronized(lockA) {
// do stuff here
}
}

public void method2() {
Object lockB = lockA;
synchronized(lockB) {
// do stuff
}
}

如果另一个线程正在执行 method1()(因此锁定了 lockA),则将允许执行 method2()

谢谢!

最佳答案

同步是在对象上完成的,因此method2中的synchronized block 需要等待method1中的synchronized block 完成。

每个对象都有一个与其关联的“固有锁”(请参阅​​ Intrinsic Locks and Synchronization )。同步块(synchronized block)使用与您正在同步的对象关联的内在锁。

关于Java同步/锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039048/

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