设计模式之单例模式
来源:互联网 发布:数学建模中的十大算法 编辑:程序博客网 时间:2024/05/17 15:05
最近在看设计模式的书籍,打算一天学习一种设计模式,然后记录下来。由于本人还是在校生,Java方面的知识还是很浅薄,如果有错误,欢迎指出,谢谢大神们。
今天看了单例模式,单例模式有饿汉模式和懒汉模式,一般的懒汉模式又会出现线程安全的问题。下面来看一下:
饿汉模式:
public class SingleTon {
private static SingleTon singleTon = new SingleTon();
private SingleTon() { }
public static SingleTon getInstance() {
return singelTon;
}
}
懒汉模式:
public class SingleTon {
private static SingleTon singleTon = null;
private SingleTon( ) { }
public static SingleTon getInstance( ) {
if (singleTon == null) {
singleTon = new SingleTon();
return singleTon;
}
}
}
懒汉模式会导致线程安全问题,如果两个线程同时进入getInstance方法里面,都执行了singleTon 为空的判断成立的话,那么他们会分别生成一个实例,这样子就不是单例了。 可以这样子改进:
线程安全的懒汉模式:
public class SingleTon {
private static SingleTon singleTon = null;
private SingleTon( ) { }
public sychronized static SingleTon getInstance( ) {
if (singleTon == null) {
singleTon = new SingleTon();
return singleTon;
}
}
}
上面的代码还可以这样子改进,提高执行效率,这样子写也叫作双重锁定:
public class SingleTon {
private static SingleTon singleTon = null;
private SingleTon( ) { }
public static SingleTon getInstance ( ) {
if (singleTon == null) {
sychronized(this) {
if (singleTon == null) {
singleTon = new SingleTon();
}
}
}
return singleTon;
}
}
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- [C++] 前置++和后置++的区别
- unity 通过代码查找一个文件夹下的所有文件
- 【九度OJ】1002:Grading
- 《Redis源码学习笔记》键过期
- appium python-client代码分析(一)
- 设计模式之单例模式
- 添加:TK_FLASH_INFO_AVAILABLE_TRUE的metadata 否则没有手电筒功能
- 回文数-lintcode-c++
- POJ1730 Perfect Pth Powers (math)
- iOS学习笔记-104.多线程03——线程间通信图片下载与时间计算
- 函数重载(overload)、函数覆盖(override)与隐藏
- python练习4
- 【Windows】下【Spark】源码编译
- [CMake] CMake的使用