首页 > 代码库 > 设计模式-单例模式
设计模式-单例模式
第一种方式:通过synchronized解决,性能下降
1 package singleton; 2 3 public class Singleton { 4 private Singleton() { 5 } 6 7 private static Singleton instance ; 8 9 public static synchronized Singleton getInstance() { 10 if (instance == null) { 11 synchronized (instance) { 12 instance = new Singleton(); 13 } 14 } 15 return instance; 16 } 17 }
第二种方式:JVM加载这个类时马上创建唯一的单件,可能创建时负担太重而该单件未使用,造成浪费.
1 package singleton; 2 3 public class Singleton { 4 private Singleton() { 5 } 6 7 private static Singleton instance = new Singleton(); 8 9 public static Singleton getInstance() { 10 return instance; 11 } 12 }
第三种方式:双重检查加锁
1 package singleton; 2 3 public class Singleton { 4 private Singleton() { 5 } 6 7 /** 8 * volatile确保当instance被初始化成Singleton实例时,多个线程正确的处理instance变量 9 */ 10 private volatile static Singleton instance; 11 12 public static Singleton getInstance() { 13 if (instance != null) { 14 synchronized (Singleton.class) { 15 if (instance != null) { 16 instance = new Singleton(); 17 } 18 } 19 } 20 return instance; 21 } 22 }
设计模式-单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。