JAVA设计模式之单例设计模式
来源:互联网 发布:游戏推荐 知乎 编辑:程序博客网 时间:2024/06/06 02:58
概念:
JAVA单例设计模式分为懒汉式、饿汉式和登记式单例三种,以下只介绍前两种。
一、懒汉式单例:
<pre name="code" class="html">//懒汉式在第一次调用的时候实例化自己public class Singleton{ //私有的构造函数,防止在外部被实例化 private Singleton() {} private static Singleton single = null; public static Singleton getInstance() { if(single==null){ single = new Singleton(); } return single; }}
以上懒汉式单例设计没有考虑到线程安全的问题,并发环境下很有可能出现多个Singleton实例;解决线程安全问题,需要添加同步代码块,但会降低效率
<pre name="code" class="html">//懒汉式在第一次调用的时候实例化自己public class Singleton{ //私有的构造函数,防止在外部被实例化 private Singleton() {} private static Singleton single = null; public static Singleton getInstance() { if(single==null){
//同步代码块 synchronized(Singleton.class){ if(single==null){ single = new Singleton(); } } } return single; }}
二、饿汉式:
//饿汉式在类初始化的时候,已经自行实例化public class Singleton{ private Singleton(){} //实例化 private static final Singleton single = new Singleton(); public static Singleton getInstance(){ return single; }}饿汉式在类创建的同时就已经创建好一个静态对象供系统使用,以后不再改变,所以是线程安全的。
个人总结如下:
1、懒汉式一开始并没有创建实例,而是在用到的时候才会创建一个实例;饿汉式是类创建的同时就创建一个实例;
2、懒汉式是非线程安全的,如果要解决线程安全问题需要添加同步代码块,会降低效率;饿汉式是线程安全的;
0 0
- java设计模式之单例设计
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- javascript 数据类型
- 超简单Android Studio导入第三方库(SlidingMenu)教程绝对傻瓜版
- C++访问控制——三种继承方式
- android开发依赖注入-RoboGuice
- JNI之——'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件
- JAVA设计模式之单例设计模式
- C++使用string.getline()和cin混合输入的问题(cin清空缓存)
- 一盞茶心文中絡
- shell基本
- Android sdk更新设置
- 解决get方法传递URL参数中文乱码问题
- link流程 建立时需要注意的地方
- ZOJ 3471 Most Powerful
- 光明日报出版社-出版社介绍