singleton und öffentliche statische variable in Java

Habe ich 2 Optionen:

  1. Singleton-Muster

    class Singleton{
        private static Singleton singleton = null;
    
        public static synchronized Singleton getInstance(){
            if(singleton  == null){
                singleton = new Singleton();
            }
            return singleton;
        }
    }
  2. mit einem static final Feld

    private static final Singleton singleton = new Singleton();
    
    public static Singleton getSingleton() {
        return singleton;
    }

Was ist der Unterschied? (Single-Threaded oder multithreaded)

Updates: ich bin mir bewusst, Bill Pugh oder enum Methode.
Ich bin nicht auf der Suche nach dem richtigen Weg, aber ich habe nur 1. Gibt es eigentlich einen Unterschied b/w 1 oder 2?

  • Nachdem Ihre aktualisierte Frage keinen Unterschied.
  • diese Frage ist nichts mit singleton. Sie Fragen über den Zugriff auf ein statisches Feld von synchronisiert/nicht synchronisiert Kontext. edit-tags bitte.
  • Bin ich anderer Meinung als die erste option zu sperren, jeden thread, der versucht, um die Instanz und ist daher etwas weniger performant.
  • seine nicht gute Praxis zu verwenden synchronized eine alle Ihre Methode. synchronized die Umsetzung ist sehr teuer. Ich veröffentlichte unter anderem eine bessere Art und Weise zu verwenden Singleton-für multithreading
InformationsquelleAutor Achow | 2012-12-05
Schreibe einen Kommentar