singleton avec volatile en Java

class MyClass
{
      private static volatile Resource resource;

      public static Resource getInstance()
      {
            if(resource == null)
                  resource = new Resource();
            return resource;
      }
 }

Ici mon doute est selon la java de la simultanéité dans la pratique si vous utilisez volatile, coffre-fort à la publication qui se passe (c'est à dire dès que la référence est visible à un autre thread de données est également disponible). Donc, puis-je l'utiliser ici? Mais si elle est correcte, alors supposons que thread1 vérifie maintenant les "ressources" et c'est null si il commence la création de l'objet. Alors que thread1 est la création de l'objet, un autre thread, c'est à dire thread2 vient et de vérifier la valeur de la "ressource" et thread2 trouve nulle (on suppose la création de la "ressource" de l'objet prend un peu de temps considérable et que thread1 n'a pas encore achevé la création pour la sécurité de la publication n'est pas arrivé donc inaccessible thread2 )puis il va également commencer la création de l'objet? si oui, alors la classe de l'invariant de pauses. Suis-je la corriger? Merci de m'aider dans la compréhension de ce surtout l'utilisation de la volatilité ici.

source d'informationauteur Trying