首页 > 编程语言 > 详细

java单例设计模式

时间:2019-02-28 21:03:29      阅读:141      评论:0      收藏:0      [点我收藏+]

 java单例设计模式


单例设计模式是指一个类只有一个实例,而且这个实例不人为控制,而是由代码来限制,并提供全局访问的方法,主要应用于向计数器这类只需要一个实例的业务。

单例设计模式比较常见的创建方式有两种:饿汉式和懒汉式

1.饿汉式单例是指只要类一加载就会创建实例(线程安全)

 

public class Student {

    //私有化构造方法,只在本类使用
    private Student(){}
//定义一个静态的本类属性 private static Student s = new Student();
//提供静态方法,返回唯一的实例 public static Student getInstance(){return s; } }

 

2.懒汉式单例不会在类加载时创建,它在调用方法获取时才会创建实例(线程不安全)

    //私有化构造方法,只在本类使用
    private Student(){}
    //定义一个静态的本类属性
    private static Student s = null;
    //提供静态方法,返回唯一的实例,为了线程安全使用synchronized关键字确保指挥生成单例
    public synchronized static Student getInstance(){
        if(s==null){
            s=new Student();
        }
        return s;
    }
synchronized 同步锁会把整个方法都锁住,锁住的代码太多,锁的粒度太大会影响性能,使用双重判定锁可以只锁住几行代码,提升性能。
public class Student {

    //私有化构造方法,只在本类使用
    private Student(){}
    //定义一个静态的本类属性
    private static Student s = null;
    //提供静态方法,返回唯一的实例,使用双重判定锁确保线程安全
     public static Student getInstance() {
         if (s == null) {
             synchronized (Student.class) {
                  if (s == null) {
                       s = new Student();
                  }
             }
         }
         return s;
    }
}

(使用java反射机制可以实例化private的构造方法来创建实例,此时基本上会使所有的Java单例实现失效)






java单例设计模式

原文:https://www.cnblogs.com/dxx0921/p/10452886.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!