标签:
package dmode.singleton; import java.util.Random; /** * 类描述: 单例模式 * 单例定义:ensure a class has only one instence,and provide a global point of access to it * 确保一个类只有一个实例,并且提供一个全局访问点来访问这个实例 * 其他内容:static 关键字修饰的内容,存储在静态代码区域, * java 的存储内容包括:堆、栈(常量、对象引用)、静态存储区 * @version 1.0 CreateDate: 2015-2-12 * * @history: * @updateDate @updatePerson @declare * */ public class SinglClass { private static String singlParam; //懒汉式声明,在使用对象的时候再获取 //线程不安全:在getInstenc() 方法中,如果并发,可能获取获取多个实例 //解决方法:可以用 synchronized 修饰方法,也可以在方法体内用 synchronized{}代码块 private static SinglClass singlClazz; //饿汉式声明,在类的初始化时就获取实例,final 的作用是让这个实例不在变化 //线程安全 private static final SinglClass singlClazz2 = new SinglClass("饿汉式"); private static int time = 1; private SinglClass(String param){ System.out.println("开始构造对象" + new Random().nextInt(100) + param); } //懒汉式声明 //synchronized 保证线程安全 public static synchronized SinglClass getInstence(){ if(singlClazz == null){ singlParam = "懒汉式"; singlClazz = new SinglClass("懒汉式"); } return singlClazz; } //饿汉式声明 public static SinglClass getInstence2(){ return singlClazz2; } public void sayHello(){ if(this == singlClazz){ System.out.println(singlParam + "say Hello " + time++ ); }else{ System.out.println("饿汉式" + "say Hello " + time++ ); } } }
标签:
原文地址:http://www.cnblogs.com/leonkobe/p/4287770.html