//饿汉式单例模式
public class Hungry {
private Hungry() {
}
private final static hungry = new Hungry();
public static Hungry getInstance() {
return hungry;
}
}
单线程下的懒汉式
//懒汉式单例模式
public class LazyMan {
private LazyMan() {
// TODO Auto-generated constructor stub
}
private static LazyMan lazyman;
public static LazyMan getInstance() {
if (lazyman == null) {
lazyman = new LazyMan(;)
}
return lazyman;
}
}
//双重检测锁模式的DCL懒汉式单例
public class LazyMan {
private LazyMan() {
// TODO Auto-generated constructor stub
System.out.println(Thread.currentThread().getName() + "ok");
}
//volatile 保证原子性操作
private volatile static LazyMan lazyman;
//双重检测锁模式的DCL懒汉式单例
public static LazyMan getInstance() {
if (lazyman == null) {
synchronized(LazyMan.class) { //加锁
if(lazyman == null)
lazyman = new LazyMan();
}
}
return lazyman;
}
public static void main(String args[]) {
for(int i=0;i<10;i++) {
new Thread(()-> {
lazyman.getInstance();
}).start();
}
}
}