Dieser Code ist nicht threadsicher. Die Instanzmethode wird auf einer Instanz synchronisiert, wenn Sie mehrere Instanzen haben, werden sie nicht den gleichen Monitor verwenden, und daher können die Aktualisierungen verschachtelt werden.
Sie müssen entweder die statische aus dem value
Feld entfernen oder statisch zur increment()
Methode hinzufügen.
Auch, wie Sie value
public gemacht haben, gibt es das zusätzliche Problem, dass Wert außerhalb dieser Methode geändert oder gelesen werden kann, ohne Synchronisierung zu verwenden, die zum Lesen alter Werte führen könnte.
Code So ändert den folgenden wird es machen Thread-sicher-:
public class IncreaseTest {
private int value = 0;
public synchronized int increment() {
return value++;
}
}
Sie sollten die Sprache angeben. – paxdiablo
Vielen Dank für Ihre Erinnerung – codeisee