分享一个volatile实现的双检锁单例模式

来源:互联网 发布:windows 10 保护系统 编辑:程序博客网 时间:2024/05/03 23:43
/** * DCL(DubleCheckedLock)单例模式 */public class Singleton {private volatile static Singleton instance;public static Singleton getInstance() {if (instance == null) {//锁细化synchronized (Singleton.class) {if (instance == null) {//多线程环境下还需要再次判空instance = new Singleton();}}}return instance;}}


volatile关键字的作用是禁止指令重排序优化。


分享一个介于牛A和牛C之间的单例模式,秒杀其他一切单例模式:

public enum EasySingleton {INSTANCE;}

通过EasySingleton.INSTANCE访问,线程安全而且还能防止反序列化导致重新创建新的对象。

不禁感叹,Java原来也可以如此优美!


0 0
原创粉丝点击