码迷,mamicode.com
首页 > 编程语言 > 详细

Java-单例模式

时间:2018-03-18 16:24:05      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:线程同步   方式   实例   分享图片   private   静态   single   资源   线程安全   

一、  单例模式:一种常用的软件设计模式。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

二、  应用:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例

三、  单例模式特点:
      1、单例类只能有一个实例。
      2、单例类必须自己创建自己的唯一实例。
      3、单例类必须给所有其他对象提供这一实例。

四、单利模式的创建  

技术分享图片
public class Singletn {
    private String name;
    private String id;
    //创建唯一实例
    private static Singletn singletn = new Singletn();
    //对外提供实例
    public static Singletn getInstant() {
        return singletn;
    }
    //构造器私有化
    private Singletn() {
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }
}
饿汉式单例模式
技术分享图片
public class Singletn {
    private String name;
    private String id;
    //创建唯一实例
    private static Singletn singletn;
    //对外提供实例
    public static Singletn getInstant() {
        if (singletn == null){//双重检查
            synchronized (Singletn.class){//多线程时,线程安全问题,加锁实现线程同步
                singletn= new Singletn();
            }
        }
        return singletn;
    }
    //构造器私有化
    private Singletn() {
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }
}
懒汉式单例模式

  饿汉式与懒汉式区别:

    1.饿汉式即静态初始化的方式,它是类一加载就实例化的对象,所以要提前占用系统资源

    2.懒汉式类似于延迟加载,在使用的时候实例化,多线程中会有线程安全问题,需要双重检查

  推荐使用饿汉式。

Java-单例模式

标签:线程同步   方式   实例   分享图片   private   静态   single   资源   线程安全   

原文地址:https://www.cnblogs.com/javaLf/p/8595466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!