class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
Kann jemand erklären, warum die obige Klasse nicht threadsicher ist?
synchronized
sollte die nur in statischen Methoden verwendet werden. Selbst wenn Sie die increment
Methode entfernen , ist sie meiner Meinung nach immer noch nicht threadsicher, da zwei Instanzen (die nur über dieselbe Instanz synchronisierten Zugriff haben) die Methode gleichzeitig aufrufen können.
increment
) benötigt, ist sie möglicherweise threadsicher. Oder wenn Sie ein Sperrobjekt verwendet haben. Wie gesagt, ich weiß nichts über Java - mein Kommentar stammt aus C # -Wissen.