singleton et public static variable Java

J'ai 2 options:

  1. Le Pattern Singleton
    class Singleton{
        private static Singleton singleton = null;
    
        public static synchronized Singleton getInstance(){
            if(singleton  == null){
                singleton = new Singleton();
            }
            return singleton;
        }
    }
  2. à l'aide d'un static final champ
    private static final Singleton singleton = new Singleton();
    
    public static Singleton getSingleton() {
        return singleton;
    }

Quoi la différence? (single thread ou multithread)

Mises à jour: je suis au courant du projet de Loi Pugh ou enum méthode.
Je ne suis pas la recherche de la bonne façon, mais je ne l'ai utilisé 1. Est-il vraiment une différence b/w 1 ou 2?

Après la mise à jour de votre question pas de différence.
cette question n'a rien à voir avec singleton. vous vous posez au sujet de l'accès à un champ statique de synchroniser ou non synchronisé avec le contexte. modifier les balises s'il vous plaît.
Je suis en désaccord que la première option de verrouillage de chaque thread qui tente de récupérer l'instance et est donc légèrement moins performant.
ses pas une bonne pratique à utiliser synchronized un tous votre méthode. synchronized mise en œuvre est très cher. J'ai posté en vertu d'autres de meilleur moyen d'utiliser un Singleton pour le multithreading

OriginalL'auteur Achow | 2012-12-05