gpt4 book ai didi

Java "static final"与锁定时仅 "static"变量

转载 作者:行者123 更新时间:2023-12-01 17:51:58 25 4
gpt4 key购买 nike

我一直在阅读有关使用静态对象作为锁的内容,最常见的示例如下:

public class MyClass1 {
private static final Object lock = new Object();
public MyClass1() {
//unsync
synchronized(lock) {
//sync
}
//unsync
}
}

我的问题是锁必须是最终的吗?我知道将其作为最终值是很好的,以确保没有人会混淆该值,但是如果没有最终值,它会起作用吗?

最佳答案

当然,它会起作用——直到您重新分配它。如果lock不是最终的,有人可以为其分配另一个值(lock = new Object())。这就像更换门锁一样:如果您仍然拥有旧 key ,您将无法再使用该锁。

lock 设置为最终状态可以防止这种情况发生,因此这样做总是一个好主意。

关于Java "static final"与锁定时仅 "static"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105590/

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