Na poniższym uproszczonym klasy:Java Widoczność Pamięci Konstruktorów
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++;
}
...
}
Chyba ogólne pytanie jest dla zmiennych modyfikowalnych strzeżonych przez synchronizacji jest to niezbędne do synchronizacji przy ustalaniu wartości początkowej w konstruktorze?
Co próbujesz osiągnąć? – biziclop
Nie widzę żadnego sposobu, aby dwa wątki mogły być w tym samym wystąpieniu podczas jego konstruowania, więc powiedziałbym "nie". Jeśli wartość była prawdopodobnie statyczna, ale trzeba by zsynchronizować obiekt klasy, a nie ten odnośnik. – Pace
@biziclop Próbuję tylko upewnić się, że mój kod jest poprawny w odniesieniu do bezpieczeństwa wątków i lepiej zrozumieć model pamięci Java. – nikdeapen