Considerar siguiente código, quiero que sea una clase de seguro de rosca, de modo que nunca conseguirá número impar:¿Puedo usar sincronizado con un campo final?
class Test {
private int value = 0;
private final Object lock;
public void add() {
synchronized (lock) {
value++;
value++;
}
}
public int getValue() {
synchronized (lock) {
return value;
}
}
}
Ahora estoy duda del campo de bloqueo, que se declara a ser definitiva, ¿esto ¿importar? o romperá la seguridad del hilo?
Creo que si el campo de bloqueo no se declara como final, esta debería ser una clase segura para subprocesos. Si esta conclusión es incorrecta, por favor corrígeme, gracias.
Consulte [this] (http://stackoverflow.com/questions/2101327/final-variable-and-synchronized-block-in-java) pregunta. – Lion