静态内部类单例 线程安全-Java版

发布于 2020-04-16 14:35:40
关注者
0
被浏览
890
1 个回答
  • 面试哥
    面试哥 2020-04-16
    为面试而生,有面试问题,就找面试哥。

    我比较倾向于使用静态内部类的方法,这种方法也是《Effective Java》上所推荐的。

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

    这种写法仍然使用JVM本身机制保证了线程安全问题;由于 SingletonHolder 是私有的,除了 getInstance() 之外没有办法访问它,因此它是懒加载的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖 JDK 版本。

面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看