王学岗单例模式的优化————双重检查、枚举、内部类、容器管理
来源:互联网 发布:王陆807使用方法知乎 编辑:程序博客网 时间:2024/06/06 16:26
第一:双重检查优化,ImageLoader用的就是这种
package com.example.shuangchongjiancha;public class Singleton { //线程并发的时候,当我们的变量被修改之后,其他的并发线程及时收到通知,其他的线程就可以访问数据 private volatile static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
枚举类实现单例
package com.example.shuangchongjiancha;public enum Singleton { //该枚举类只有一个对象instance;}
静态内部类实现单例模式
package com.example.shuangchongjiancha;public class Singleton { private static class SingletonHolder { private static Singleton singleton = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.singleton; }}
容器管理
联想:Java服务器连接池
package com.example.shuangchongjiancha;public class Singleton {}
package com.example.shuangchongjiancha;import java.util.HashMap;public class ObjectManager { private static HashMap<String, Object> hashMap = new HashMap<String, Object>(); private static int MAX_SIZE = 5; private ObjectManager() { } public static Object get(String key) { Object instance = hashMap.get(key); if (instance == null && hashMap.size() < MAX_SIZE) { instance = new Singleton(); hashMap.put(key, instance); } return instance; } public static void put(String key, Object value) { Object instance = hashMap.get(key); if (instance == null && hashMap.size() < MAX_SIZE) { instance = new Singleton(); hashMap.put(key, instance); } }}
package com.example.shuangchongjiancha;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ObjectManager.put("a", "aaa"); ObjectManager.put("b", "aaa"); Object s1=ObjectManager.get("a"); Object s2=ObjectManager.get("b"); //s1和s2不是同一个对象 System.out.println(s1); System.out.println(s2); }}
0 0
- 王学岗单例模式的优化————双重检查、枚举、内部类、容器管理
- (GOF23设计模式)_单例模式_双重检查锁式_静态内部类式_枚举式
- 【趣解】单例模式之双重锁、内部类、枚举
- 单例模式的五种写法:饿汉,懒汉, 双重校验锁,静态内部类,枚举
- 单例模式的五种写法:懒汉/饿汉/双重检验锁/静态内部类/枚举
- 《Java与模式》学习笔记(6)——双重检查成例的研究
- java单例模式的5种写法-饿汉、懒汉、静态内部类、双重校验锁、枚举
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 理解单例设计模式(饿汉式,懒汉式,静态内部类,枚举,双重校验锁)
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式五种写法 懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- Java —— static 关键字、static 内部类、枚举类
- 设计模式学习—单例模式(双重检查锁之无序写入)
- obs+nginx搭建流媒体
- 归并排序
- 软导涉及英文缩写
- java.lang.NoClassDefFoundError: org/apache/ibatis/cursor/Cursor
- 持续集成环境选择:Jenkins VS gitlab-ci
- 王学岗单例模式的优化————双重检查、枚举、内部类、容器管理
- hi
- 2017年度计划
- 安卓权限大全
- C++的tie()函数
- 帮助java初学者建立基础知识框架
- poj 1265 Area (Pick公式)
- SSH的整合技巧与开发步骤
- SQL语法大全