package com.easygo.singleton;
/**
* Java单例有两种方式,饿汉式和懒汉式,饿汉式是在对象创建之前加载,优先于对象,而懒汉式是在对象创建完成后调用对象的方法来创建对象
* ,了解JVM加载原理的都清楚,正真意义上的单例是饿汉式,在对象创建之前加载。
* @author lx
*
*/
public class Singleton {
//饿汉式
public static Singleton singleton=null;
static {
singleton=new Singleton();
}
//懒汉式
public static Singleton getsingleton() {
if(null==singleton) {
singleton=new Singleton();
return singleton;
}else {
return singleton;
}
}
}
创建线程安全的单例(双检锁)
package com.easygo.dome;
public class Th1 {
private static Th1 th1=null;
public static Th1 getTh1() {
if(null==th1) {
synchronized (Th1.class) {
if(null==th1) {
th1=new Th1();
}
}
}
return th1;
}
}