1.懒汉式(单线程不安全)
class singleton{
private static singleton st;
private void singleton() {
}
public static singleton getSingleton(){
if(st==null){
st=new singleton();
}
return st;
}
2多线程保证线程安全
class singleton{
private static singleton st;
private void singleton() {
}
public static synchronized singleton getSingleton(){
if(st==null){
st=new singleton();
}
return st;
}
}
3.饿汉式
public class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
4静态内部类
public class Singleton {
private Singleton(){
}
private static class SingletonHolder{
private final static Singleton instance=new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
5同步锁
public class Singleton {
private static Singleton instance=null;
private Singleton(){
}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class){
if(instance==null){
instance=new Singleton();
}
}
}
return instance;
}
}