单例模式 创建一个实例,向系统提供这个实例。分为懒汉式 恶汉式。
一.懒汉式 是调用的时候再用
//
Public class Single{
private single(){}
Private static final Sigle sigle=null;
Public getinstance(){
sigle= new Sigle();
}
}
// 双重锁 保证线程安全
Public class Single{
private single(){
}
Private static final fg=null;
Public getinstance(){
If(fg==null)
Syschornized(true){
If(fg==null)
fg=new FG();
}
}
//静态内部类
Public class Single{
Private static class inter{
private static final Sigle INSTANCE= new Sigle();
}
Public sigle getInsatance(){
return inter.INSTANCE;
}
}
二 恶汉式 在初始化的时候 就已经建立
Public class Sigle{
private sigle(){}
Private static final Sigle sigele =new Sigle();
Public sigle getInsatance(){
return sigle;
}
}
恶汉式是线程安全的 ,懒汉式枷锁保证线程安全;
恶汉式在 内存需要较小,初始化就用到单例的时候使用,
懒汉模式可以延时加载,用于建立单例消耗较大的情况,但是懒汉模式需要考虑到线程安全问题。虽然我们可以双重判断锁的方式,一定程度保证了性能有保证了线程安全。