java单例
程序员文章站
2022-07-14 09:37:08
...
直接产生单例实例
public class Singleton {
private Singleton(){
}
//直接产生单例实例 线程安全的
private static final Singleton single=new Singleton();
public static Singleton getInstance(){
return single;
}
}
直接产生单例实例 线程安全的
延迟实例化 线程不安全的
public class Singleton {
private Singleton(){
}
//延迟实例化 线程不安全的
private static Singleton single=null;
public static Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
延迟实例化 线程安全的 完全同步方法
public class Singleton {
private Singleton(){
}
//延迟实例化 线程安全的 完全同步方法
private static Singleton single=null;
public static synchronized Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
延迟实例化 线程安全的 部分同步方法
public class Singleton {
private Singleton(){
}
//延迟实例化 线程安全的 部分同步方法
private static Singleton single=null;
public static Singleton getInstance(){
if(single==null){
synchronized(Singleton.class){
if(single==null){
single=new Singleton();
}
}
}
return single;
}
}
延迟实例化 线程安全的 静态内部类
public class Singleton {
private Singleton(){
}
private static class Builder{
private static final Singleton single=new Singleton();
}
//延迟实例化 线程安全的 静态内部类
private static Singleton single=null;
public static Singleton getInstance(){
return Builder.single;
}
}
上一篇: Unity 程序去边框并实现拖拽窗口
下一篇: c#中判断数据库中读取的字段值为null