任何人都可以告诉我在Java的上下文中以下行的含义:
除非它是不可变的,否则仍然可以操纵最终变量
据我所知,通过声明的任何变量,最后,你不能再改变它,那么他们的意思字不变在上述行?
考虑下面的代码,我想让它成为一个线程安全类,以便它永远不会得到奇数:
class Test {
private int value = 0;
private final Object lock;
public void add() {
synchronized (lock) {
value++;
value++;
}
}
public int getValue() {
synchronized (lock) {
return value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在怀疑锁定领域,这被宣布为最终的,这有关系吗?或者它会打破线程的安全吗?
我认为如果锁定字段没有被声明为final,那么这应该是一个线程安全的类.如果这个结论有误,请指正,谢谢.