Für die folgende vereinfachte Klasse:Java Memory Visibility In Konstrukteurs
public class MutableInteger {
private int value;
public MutableInteger(int initial) {
synchronized(this) { // is this necessary for memory visibility?
this.value = initial;
}
}
public synchronized int get() {
return this.value;
}
public synchronized void increment() {
this.value++;
}
...
}
Ich denke, die allgemeine Frage für änderbare Variablen ist durch die Synchronisation bewacht ist es notwendig, zu synchronisieren, wenn im Konstruktor den Anfangswert?
Was wollen Sie erreichen? – biziclop
Ich sehe keine Möglichkeit, wie zwei Threads in der gleichen Instanz sein könnten, während es gebaut wird, also würde ich nein sagen. Wenn der Wert vielleicht statisch wäre, müssten Sie aber das Klassenobjekt und nicht die Referenz synchronisieren. – Pace
@biziclop Ich bin nur sicher, dass alle meinen Code zu machen versuche, ist richtig in Bezug auf Thread-Sicherheit und um besser auf das Java-Speichermodell zu verstehen. – nikdeapen