单例模式

来源:互联网 发布:龙之谷2016玩家数据 编辑:程序博客网 时间:2024/09/21 11:25

Double Check Locking 双检查锁机制(推荐)

为了达到线程安全,又能提高代码执行效率,我们这里可以采用DCL的双检查锁机制来完成,代码实现如下:

public class MySingleton {//使用volatile关键字保其可见性volatile private static MySingleton instance = null;private MySingleton(){} public static MySingleton getInstance() {try {  if(instance != null){//懒汉式 }else{//创建实例之前可能会有一些准备性的耗时工作 Thread.sleep(300);synchronized (MySingleton.class) {if(instance == null){//二次检查instance = new MySingleton();}}} } catch (InterruptedException e) { e.printStackTrace();}return instance;}}