【发布时间】:2012-07-13 17:57:44
【问题描述】:
考虑下面的代码,我想让它成为一个线程安全的类,这样它就永远不会得到奇数:
class Test {
private int value = 0;
private final Object lock;
public void add() {
synchronized (lock) {
value++;
value++;
}
}
public int getValue() {
synchronized (lock) {
return value;
}
}
}
我现在对声明为 final 的 lock 字段表示怀疑,这有关系吗?还是会破坏线程安全?
我认为如果锁字段没有被声明为最终的,这应该是一个线程安全的类。如果这个结论有误,请指正,谢谢。
【问题讨论】:
-
见this问题。
标签: java final synchronize