码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式-静态内部类

时间:2020-11-01 09:45:05      阅读:13      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!