当前位置:   article > 正文

java 创建单例_Java创建单例模式

java 创建一个已有类的单列

创建单例模式

第一种方式

优点:简单易懂

缺点:在不需要此类的时候也会new一个对象,造成了资源的浪费,如果有多个此类的单例模式类,启动速度会比较慢

class Singleton {

private static Singleton singleton = new Singleton();

private Singleton(){

}

public static Singleton getSingleton(){

return singleton;

}

public void Print(){

System.out.println("this is singleton");

}

}

第二种方式

优点:简单且不占用资源

缺点:不是完全的线程安全的,如果在if语句执行过后转移到另一线程执行,在转移回来的时候将不进行判断,又生成一次

class Singleton {

private static Singleton singleton= null;

private Singleton(){

}

public static Singleton getSingleton(){

if(singleton == null){

singleton = new Singleton();

}

return singleton;

}

}

第三种方式--线程安全的

该方式一次锁住了一个方法,粒度较大,可以改进为锁住new语句,就是所谓的“双重锁机制”

class Singleton{

private static Singleton singleton =null;

private Singleton(){

}

public static synchronized Singleton getSingleton(){

if (singleton == null){

singleton = new Singleton();

}

return singleton

}

}

改进后:

class Singleton{

private static Singleton singleton =null;

private Singleton(){

}

public static synchronized Singleton getSingleton(){

if (singleton == null){

synchronized (Singleton.class){

singleton = new Singleton();

}

}

return singleton;

}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/157652
推荐阅读
相关标签
  

闽ICP备14008679号