java单例模式
来源:互联网 发布:js获取表单radio 编辑:程序博客网 时间:2024/06/06 07:13
public static DbOpenHelpergetInstance(Context context) {
if (instance == null) {
instance = new DbOpenHelper(context.getApplicationContext());
}
return instance;
}
if (instance == null) {
instance = new DbOpenHelper(context.getApplicationContext());
}
return instance;
}
。。。。
1.单例模式:常用,可以重复利用同一个对象,避免产生过多重复的对象。
public class SingletonPattern {
private SingletonPattern singletonPattern ;
private SingletonPattern(){}
public static SingletonPattern getInstance(){
if(this.singletonPattern == null){
this.singletonPattern = new SingletonPattern();
}
return this.singletonPattern;
}
}
我们来看红色的那一部分,假如现在有两个线程A 和线程B,线程A 执行到 this.singletonPattern =
new SingletonPattern(),正在申请内存分配,可能需要0.001 微秒,就在这0.001 微秒之内,线程B 执
行到if(this.singletonPattern == null),你说这个时候这个判断条件是true 还是false?是true,那
然后呢?线程B 也往下走,于是乎就在内存中就有两个SingletonPattern 的实例了,看看是不是出问题了?
解决方法如下:
public class SingletonPattern {
private static final SingletonPattern singletonPattern= newSingletonPattern();
//限制住不能直接产生一个实例
private SingletonPattern(){}
public synchronized static SingletonPattern getInstance(){
return singletonPattern;
}
}
看红色那部分,直接new一个对象传递给类的成员变量singletonpattern,你要的时候getInstance()直接返回给你,解决问题!
0 0
- java单例模式
- Java单例模式
- java单例模式
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- Java单例模式
- java 单例模式
- java单例模式
- java单例模式
- java单例模式
- java 单例模式
- JAVA单例模式
- java单例模式 .
- Java 单例模式
- Java单例模式
- Java 单例模式
- leetcode 61: Rotate List
- hdu 1016 Prime Ring Problem
- iOS 开发中界面层与网络相关的部分通用功能的的设计
- 极客五控
- 黑马程序员-集合-Set和Map和Collections
- java单例模式
- RSA算法原理(一)
- swift学习之...和..<
- RSA算法原理(二)
- 堆排序
- 关于System V 信号量
- OSG垃圾收集机制(DeleteHandler)
- JVM-characters
- Course Schedule -- leetcode