今日みつけたバグ
int num;
void foo() {
synchronized (new Integer(num)) {
...
}
}
プリミティブ型は、synchornizedステートメントに指定できないから、苦しまぎれにIntegerにラップしてみたんだろうな。もちろん、これは全く同期されない。privateなロック用オブジェクトを用意しないといけない。
int num;
private final Object lock = new Object;
void foo() {
synchronized (lock) {
...
}
}








