Java之线程安全的单例设计模式

来源:互联网 发布:视频一对一聊天软件 编辑:程序博客网 时间:2024/06/05 17:31

线程安全的单例设计模式有如下几种方法:

1.利用静态内部类

public class Singleton {// 私有化构造方法private Singleton() {}// 静态内部类在使用时才会加载,且只加载一次private static class T {private static Singleton instance = new Singleton();}// 返回实例public Singleton getInstance() {return T.instance;}}


2.双重检查锁(Double Checked Locking)-使用volatile关键字

public class Singleton {//注意,要用volatile关键字private static volatile Singleton instance = null;// 私有化构造方法private Singleton() {}public Singleton getInstance() {if(instance == null){synchronized(Singleton.class){instance = new Singleton();      //注意,此步骤并非原子操作(由于存在指令重排序)}}return instance;}}




3.不使用volatile的双重检查

public class Singleton {private static Singleton instance = null;// 私有化构造方法private Singleton() {}public synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton(); }return instance;}}


总结:个人认为方法一利用静态内部类为线程安全单例模式最佳答案,因为没有涉及到锁的问题,使用锁或多或少会涉及到性能的问题

原创粉丝点击