懒汉单例模式
package singleInstanceA;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
public class LazyMan {
private static boolean xyz = false;
private LazyMan() {
if (xyz == false) {
xyz = true;
} else {
throw new RuntimeException("不要试图反射破坏异常");
}
}
private volatile static LazyMan lazyMan;
public static LazyMan getInstance() {
if (lazyMan == null) {
synchronized (LazyMan.class) {
if (lazyMan == null) {
lazyMan = new LazyMan();
}
;
}
}
return lazyMan;
}
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchFieldException {
Field xyz = LazyMan.class.getDeclaredField("xyz");
xyz.setAccessible(true);
Constructor<LazyMan> constructor = LazyMan.class.getDeclaredConstructor(null);
constructor.setAccessible(true);
LazyMan L1 = constructor.newInstance();
xyz.set(L1,false);
LazyMan L2 = constructor.newInstance();
System.out.println(L1);
System.out.println(L2);
}
}
饿汉单例模式
package singleInstanceA;
public class Hungry {
private byte[] a = new byte[1024];
private Hungry() {
}
private static Hungry hungry= new Hungry();
public static Hungry getInstance() {
return hungry;
}
}
静态内部类
package singleInstanceA;
public class Holder {
private Holder() {
}
public static Holder getInstance() {
return InnerClass.HOLDER;
}
public static class InnerClass {
public static final Holder HOLDER = new Holder();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现