实现Singleton模式-java

网友投稿 245 2022-11-06


实现Singleton模式-java

实现Singleton模式

以下写法均为延迟加载!在调用方法时才进行实例化基础版 要想构造一个单例模式,需要这个类最多只能有一个实例化对象。也就是外部类无法进行new等实例化操作!这样需要让构造方法设置为私有:

private Singleton(){};

然后在内部进行实例化的控制

public class Singleton { private Singleton(){}; private static Singleton singleton = null; public static Singleton getSingleton() { if (singleton == null) { singleton = new Singleton(); } return singleton; }}

以上单例模式是非线程安全的!基础版2.0-线程安全版 线程不安全进行加锁:

public class Singleton { private Singleton(){}; private static Singleton singleton = null; private static Object object = new Object(); public static Singleton getSingleton() { synchronized (object){ if (singleton == null) { singleton = new Singleton(); } } return singleton; }}

基础版3.0 - 优化版 优化版就是不进行无脑加锁影响效率,在加锁前对已经存在的实例返回

public class Singleton { private Singleton(){}; private static Singleton singleton = null; private static Object object = new Object(); public static Singleton getSingleton() { if (singleton != null) { return singleton; }else { synchronized (object){ if (singleton == null) singleton = new Singleton(); } return singleton; } }}

基础版4.0-双重加锁 volatile 关键字加锁,会对我们的进行singleton进行弱加锁判断

public class Singleton { private static Object object = new Object(); private Singleton(){}; private static volatile Singleton singleton = null; public static Singleton getSingleton() { if (singleton != null) { return singleton; }else { synchronized (object){ if (singleton == null) singleton = new Singleton(); } return singleton; } }}

高级版 利用静态内部类 和final 关键字的唯一性创建一个安全的单例!只能说: 牛逼!

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
下一篇:银行卡号归属地查询API(银行卡号归属地查询系统622203)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~