最安全的单例模式--java使用内部类实现单例模式

来源:互联网 发布:课程顾问 知乎 编辑:程序博客网 时间:2024/06/06 05:57

实现类

public class Singleton {

    private static class LazyHolder {    
       private static final Singleton INSTANCE = new Singleton();    
     }    
     private Singleton (){}    
     public static final Singleton getInstance() {    
        return LazyHolder.INSTANCE;    
     } 

}

测试

public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();
        if (singleton1 == singleton2)
            System.out.println("same");
    }
}

说明

单例模式实现方式有好多种,但大部分都会有多线程环境下的问题;使用内部类可以避免这个问题,因为在多线程环境下,jvm对一个类的初始化会做限制,同一时间只会允许一个线程去初始化一个类,这样就从虚拟机层面避免了大部分单例实现的问题,可以尝试下

0 0
原创粉丝点击