class LazySingleton{
private static LazySingleton singleton;
private LazySingleton(){
}
public static LazySingleton getInstance(){
if(singleton==null){
singleton=new LazySingleton();
}
return singleton;
}
}
2、恶汉写法,缺点是没有达到lazy loading的效果
class HungrySingleton{
private static HungrySingleton singleton=new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance(){
return singleton;
}
}
3、静态内部类,优点:加载时不会初始化静态变量INSTANCE,因为没有主动使用,达到Lazy loading
class InternalSingleton{
private static class SingletonHolder{
private final staticInternalSingleton INSTANCE=new InternalSingleton();
}
private InternalSingleton(){}
public static InternalSingleton getInstance(){
return SingletonHolder.INSTANCE;
}
}
4、枚举,优点:不仅能避免多线程同步问题 , 而且还能防止反序列化重新创建新的对象
enum EnumSingleton{
INSTANCE;
public void doSomeThing(){
}
}
5、双重校验锁,在当前的内存模型中无效
class LockSingleton{
private volatile static LockSingleton singleton;
private LockSingleton(){}
//详见:
public static LockSingleton getInstance(){
if(singleton==null){
synchronized(LockSingleton.class){
if(singleton==null){
singleton=new LockSingleton();
}
}
}
return singleton;
}
}
参考自:
关于java代码实现单例模式和java代码实现单例模式的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 苹果大型角色扮演游戏,ios大型角色扮演游戏
- u盘360杀毒怎么恢复,u盘杀毒后文件不见了
- 小鱼快跑大班体育游戏教案,大班小鱼快跑教案反思
- 主机游戏和移动游戏开发,游戏与移动开发
- go语言copy go语言copy函数
- 鱼肉做什么饺子好吃视频,鱼肉做饺子怎么做
- 路由器加密模式什么意思,路由器加密方式是什么意思
- chatgpt高能回答,什么问题chatGpt没法回答
- c语言怎么实现外部函数 c语言的外部函数