class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
Quelqu'un peut-il expliquer pourquoi la classe ci-dessus n'est pas thread-safe?
synchronized
doit être utilisé uniquement dans les méthodes statiques. Donc, à mon avis, même si vous supprimez la increment
méthode, ce n'est toujours pas threadsafe puisque deux instances (qui n'ont qu'un accès synchronisé via la même instance) peuvent appeler la méthode simultanément.
increment
), ce serait thread-safe. Ou si vous avez utilisé un objet de verrouillage. Comme je l'ai dit, je ne connais pas Java - mon commentaire découle de la connaissance du C #.