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

Java之单例模式(懒汉模式、饿汉模式)

时间:2020-05-08 16:14:30      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:bre   instance   tab   static   out   安全   nta   静态   创建   

Java之单例模式(懒汉模式、饿汉模式)

懒汉模式:在类加载的时候不被初始化。 饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。 *饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用, 懒汉模式在创建对象时,如果不加上synchronized,会导致对象的访问不是线程安全的。*

1,饿汉模式的方法

public class Singleton {
//1.将构造方法私有化,不允许外部直接创建对象
private Singleton(){
}
//2.创建类的唯一实例,使用private static修饰
private static Singleton instance=new Singleton();
//3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton getInstance(){
return instance;
}
}

2 ,懒汉模式的方法

public class Singleton2 {
//1.将构造方式私有化,不允许外边直接创建对象
private Singleton2(){
}
//2.声明类的唯一实例,使用private static修饰
private static Singleton2 instance;
//3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton2 getInstance(){
if(instance==null){
instance=new Singleton2();
}
return instance;
}
}

3,测试用例

public class Test {
public static void main(String[] args) {
//饿汉模式
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2){
System.out.println("s1和s2是同一个实例");
}else{
System.out.println("s1和s2不是同一个实例");
}
      //懒汉模式
      Singleton2 s3=Singleton2.getInstance();
      Singleton2 s4=Singleton2.getInstance();
      if(s3==s4){
          System.out.println("s3和s4是同一个实例");
      }else{
          System.out.println("S3和s4不是同一个实例");
      }
}
}

 

Java之单例模式(懒汉模式、饿汉模式)

标签:bre   instance   tab   static   out   安全   nta   静态   创建   

原文地址:https://www.cnblogs.com/lxy522/p/12850912.html

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