标签:static 避免 get 安全性 推荐 安全 class 缺点 style
1 /** 2 * 单例模式-静态内部类 3 */ 4 public class SingletonTest07{ 5 public static void main(String[] args) { 6 Singleton instanceOne = Singleton.getInstance(); 7 Singleton instanceTwo = Singleton.getInstance(); 8 // out: true 9 System.out.println(instanceOne == instanceTwo); 10 } 11 } 12 13 /** 14 * 静态内部类实现方式 15 */ 16 class Singleton { 17 /** 18 * 1.构造器初始化,外部不能new 19 */ 20 private Singleton() { 21 22 } 23 24 /** 25 * 2.写一个静态内部类,直接返回Singleton 26 */ 27 private static class SingletonInstance { 28 private static final Singleton INSTANCE = new Singleton(); 29 } 30 31 /** 32 * 3.提供一个静态的公有方法, 33 * 直接返回SingletonInstance.INSTANCE 34 */ 35 public static Singleton getInstance() { 36 return SingletonInstance.INSTANCE; 37 } 38 }
静态内部类
优缺点说明:
1) 这种方式采用了类装载的机制来保证初始化实例式只有一个线程。
2 ) 静态内部类方式在Singleton类被装载时并不会立即实例化,而是在需要实例化时,调用getInstance方法,才会装载SingletonInstance类,从而完成Singleton的实例化。
3) 类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM帮助我们保证了线程的安全性,在类进行初始化时,别的线程时无法进入的。
4) 优点: 避免了线程不安全,利用静态内部类特点实现延迟加载,效率高。
5) 结论:推荐使用
标签:static 避免 get 安全性 推荐 安全 class 缺点 style
原文地址:https://www.cnblogs.com/tree624/p/13905347.html