Faire une classe Thread-Safe

Donné:

public class TestSeven extends Thread {

private static int x;

public synchronized void doThings() {
    int current = x;
    current++;
    x = current;
}

public void run() {
    doThings();
  }
}

Quel énoncé est vrai?

A. Compilation échoue.

B. Une exception est levée lors de l'exécution.

C. la Synchronisation de la méthode run() rendrait la classe thread-safe.

D. Les données dans la variable "x" sont protégées contre l'accès simultané de problèmes.

E. Déclarant la doThings() la méthode statique rendrait la classe thread-safe.

F. envelopper les instructions à l'intérieur de doThings() dans un synchronisée(new Object()) { } bloc rendrait la classe thread-safe.

n'est-ce pas assez pour marquer doThings() comme synchronisée afin de rendre cette classe Thread-safe ? je vois que la bonne réponse est D mais le Modèle de réponse à cette question est E, Mais je ne comprends pas pourquoi?

source d'informationauteur Java Player