单例模式复习:网站计数器懒汉与饿汉模式代码实现及测试,附注意事项
好的,下面是懒汉模式和饿汉模式的单例模式实现,以及相应的测试类。 ### 懒汉模式 ```java public class LazySingleton { // 私有构造方法,防止外部实例化 private LazySingleton() {} // 静态变量,用于存储唯一的实例 private static LazySingleton instance; // 提供一个静态方法,返回唯一的实例 public static synchronized LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } } ``` ### 饿汉模式 ```java public class EagerSingleton { // 静态变量,在类加载时就初始化 private static final EagerSingleton instance = new EagerSingleton(); // 私有构造方法,防止外部实例化 private EagerSingleton() {} // 提供一个静态方法,返回唯一的实例 public static EagerSingleton getInstance() { return instance; } } ``` ### 测试类 ```java public class SingletonTest { public static void main(String[] args) { // 测试懒汉模式 LazySingleton lazyInstance1 = LazySingleton.getInstance(); LazySingleton lazyInstance2 = LazySingleton.getInstance(); System.out.println("懒汉模式: " + (lazyInstance1 == lazyInstance2)); // 输出 true // 测试饿汉模式 EagerSingleton eagerInstance1 = EagerSingleton.getInstance(); EagerSingleton eagerInstance2 = EagerSingleton.getInstance(); System.out.println("饿汉模式: " + (eagerInstance1 == eagerInstance2)); // 输出 true } } ``` ### 注意事项 1. **线程安全**:懒汉模式在多线程环境下可能会出现问题,因为多个线程可能同时进入 `if (instance == null)` 判断,导致创建多个实例。可以通过 `synchronized` 关键字解决,但会影响性能。 2. **延迟加载**:懒汉模式实现了延迟加载,即在第一次调用 `getInstance` 方法时才创建实例,而饿汉模式在类加载时就创建了实例。 3. **性能**:饿汉模式由于在类加载时就创建了实例,所以不存在线程安全问题,但可能会浪费资源,特别是当实例占用大量内存时。 希望这些代码和注意事项对你有帮助!如果有任何问题,欢迎随时提问。 ######[AI写代码神器 | 512点数解答 | 2024-11-21 20:41:59]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)351
- C++统计数组中大于首元素个数的实现与优化指南(DeepSeek | 1123点数解答 | 2026-03-20 21:48:51)25
- 用 Python 生成可跳转至 “47.243.96.125:41736” 的二维码,还能扫描测试!(阿里通义 | 568点数解答 | 2024-08-27 16:40:38)274
- 用Python轻松创建并扫描二维码,一键跳转指定网站!(讯飞星火 | 532点数解答 | 2024-08-27 16:44:03)206
- Spring Boot 打造 MallShop 购物商城:多角色权限、全业务功能的 Web 应用奇迹 (GPT | 1095点数解答 | 2024-12-09 14:06:47)371
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- 单例模式复习:网站计数器懒汉与饿汉模式代码实现及测试,附注意事项(阿里通义 | 512点数解答 | 2024-11-21 20:41:59)206
- 单例模式复习:网站计数器懒汉与饿汉模式 Java 代码实现及注意要点(字节豆包 | 379点数解答 | 2024-11-21 20:44:14)200
- 单例模式复习:网站计数器懒汉模式 Java 代码实现及多线程注意要点(字节豆包 | 305点数解答 | 2024-11-21 20:47:00)122
- 单例模式复习:网站计数器懒汉模式代码实现及多线程注意要点(阿里通义 | 311点数解答 | 2024-11-21 20:51:13)127
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)475
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)361