单例模式——设计模式个人学习
2015-12-09 13:52
330 查看
单例模式分为:饿汉模式和懒汉模式
懒汉模式:非线程安全
懒汉模式:非线程安全
public class Singleton1 { // 构造函数私有化 private Singleton1() { }; // 私有对象 private static Singleton1 singleton = new Singleton1(); // 得到私有对象 public static Singleton1 getInstance() { return singleton; } }饿汉模式:线程安全
public class Singleton2 { // 构造函数私有化 private Singleton2() { }; // 私有对象 private static Singleton2 singleton; // 得到私有对象 public static Singleton2 getInstance() { if (null == singleton) { singleton = new Singleton2(); } return singleton; } }测试类:
public class Test { /** * 饿汉模式:加载速度快、调用慢需要先创建类、线程安全 * 懒汉模式:加载速度慢、调用快开始创建类、线程不安全 * @param args */ public static void main(String[] args) { Singleton1 s1 = Singleton1.getInstance(); Singleton1 s2 = Singleton1.getInstance(); Singleton2 s3 = Singleton2.getInstance(); Singleton2 s4 = Singleton2.getInstance(); if (s1 == s2) { System.out.println("s1和s2相同!"); } else { System.out.println("s1和s2不同"); } if (s3 == s4) { System.out.println("s3和s4相同!"); } else { System.out.println("s3和s4不同"); } } }
相关文章推荐
- [链接] github中维护的一个gitignore项目
- in 型子查询引出的陷阱
- 高端技巧:如何使用#define定义变量
- POJ 3468 线段树区间更新
- 高端技巧:如何使用#define定义变量
- python基础教程共60课-第12课for循环
- onNewIntent
- 湖南多校对抗赛(2015.03.28)
- mysql基础(五) Mysql删除表时,报"Connot delete or update a parent row:a foreign key constraint fails"解决方案
- Maven搭建SpringMVC+Hibernate项目详解
- 改变PS1的颜色
- HTTP状态码
- quarzy实现定时任务以及和spring整合
- linux的 压缩与解压 命令集
- 深入理解Java:SimpleDateFormat安全的时间格式化
- linux的 压缩与解压 命令集
- CSS中具有继承性的属性:
- Maven搭建SpringMVC+Hibernate项目详解
- iOS之旅--封装NavigationController
- zzulioj 1806: n个数的最小公倍数 (GCD)