Heim  >  Artikel  >  Java  >  Worauf bezieht sich Holder im Java-Singleton-Modus?

Worauf bezieht sich Holder im Java-Singleton-Modus?

王林
王林nach vorne
2023-04-29 11:13:151427Durchsuche

Unterschiede

1. In der deklarierenden Klasse deklarieren Mitgliedsvariablen keine Instanzvariablen, sondern werden in statischen inneren Klassen platziert. Dieser Ansatz ähnelt dem eines Faulpelzes. Sie alle verwenden einen Klassenlademechanismus, um sicherzustellen, dass nur ein Thread zum Initialisieren der Instanz vorhanden ist. Der Unterschied besteht darin, dass der Holder-Einzelmodus die Initialisierung der Instanz in eine statische Kategorie einordnet, um ein verzögertes Laden zu erreichen.

Der Kern des Holder-Modus sind immer noch statische Variablen, die praktisch genug und threadsicher sind; echte Beispiele werden über die statische Holder-Klasse gehalten, um indirektes Lazy Loading zu implementieren.

2. Funktionen, Lazy Loading, gute Leistung und Thread-Sicherheit.

Instanzen

public class Singleton {
      /**
       * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例
       * 没有绑定关系,而且只有被调用到才会装载,从而实现了延迟加载
       */
      private static class SingletonHolder{
          /**
           * 静态初始化器,由JVM来保证线程安全
           */
         private static Singleton instance = new Singleton();
     }
     /**
      * 私有化构造方法
      */
     private Singleton(){
     }
     public static  Singleton getInstance(){
         return SingletonHolder.instance;
     }
 }

Das obige ist der detaillierte Inhalt vonWorauf bezieht sich Holder im Java-Singleton-Modus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen