class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
Qualcuno può spiegare perché la classe sopra non è thread-safe?
synchronized
dovrebbe essere utilizzato solo nei metodi statici. Quindi, a mio parere, anche se rimuovi il increment
metodo, non è ancora sicuro per i thread poiché due istanze (che hanno accesso sincronizzato solo tramite la stessa istanza) possono chiamare il metodo contemporaneamente.
increment
) sarebbe thread-safe. O se hai usato qualche oggetto di blocco. Come ho detto, non so nulla di Java: il mio commento deriva dalla conoscenza di C #.