ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
实现步骤如下: **1. 编写单例对象** ```java public class HungrySingle { // 提供自己的一个static实例对象 private static HungrySingle instance = new HungrySingle(); // 提供一个私有构造器 private HungrySingle() { } /** * 自己提供一个公共的方法来获取自己的实例对象 */ public static HungrySingle getInstance() { return instance; } } ``` **2. 测试** ```java @Test public void testHungrySingle() { HungrySingle hungrySingle1 = HungrySingle.getInstance(); HungrySingle hungrySingle2 = HungrySingle.getInstance(); // 输出为true,说明hungrySingle1与hungrySingle2是同一个对象,做到了单例 System.out.println(hungrySingle1 == hungrySingle2); } ``` * 优点:没有加锁,执行效率高。 * 缺点:类加载时就初始化,浪费内存。 基于 classloader 机制避免了多线程的同步问题,不过,instance 在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用 getInstance 方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化 instance 显然没有达到 lazy loading 的效果。