个人学习参考所用,勿喷!
单例有多种的写法,本例是懒汉式单例的一种写法。在高并发环境下需要注意的是:
1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象,加锁是必要的。
2.使用synchronized是比较好的解决方案,优点是代码简洁,缺点是在抛出异常的时候不能处理维护使
系统处于良好状态。
3.显示的lock设定是良好的解决方案。
使用lock的代码如下:
package demo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 参考使用
* @author Watson_Xu
* @date 2012-1-8 下午04:31:09
*/
public final class SingletonContext {
private static SingletonContext sc = null;
private SingletonContext() {
}
private static Lock lock = new ReentrantLock();
public static SingletonContext getInstance() {
if(sc == null) {
lock.lock();
if(sc == null) {
try{
sc = new SingletonContext();
} finally {
lock.unlock();
}
}
}
return sc;
}
}
使用synchronized的时候代码如下:
package demo;
/**
* 参考使用
*
* @author Watson_Xu
* @date 2012-1-8 下午04:31:09
*/
public final class SingletonContext {
private static SingletonContext sc = null;
private SingletonContext() {
}
public static synchronized SingletonContext getInstance() {
if(null == sc) {
sc = new SingletonContext();
}
return new SingletonContext();
}
}
分享到:
相关推荐
本资源描述了C++11 中多线程的创建,C++11中std命名空间中将boost库中的Thread加入,boost多线程从准标准变为标准,其中还介绍了C++ 多线程下的单例模式的使用,本文档为txt文档
C++11实现线程安全的单例代码和测试代码,包含singleton.h,main.cpp,希望帮助到大家。
这是一个关于多线程下的单例模式优化代码。public class Singleton { private static Singleton instance; private Singleton (){ } public static Singleton getInstance(){ //对获取实例的方法进行同步 if...
线程安全的单例模式 线程安全的单例模式 线程安全的单例模式
使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏
主要演示多线程下的单例模式,分别演示了lock和synchronized两种方案,希望能给大家做一个参考。
该资源是多线程并发下的单例模式-源码,几乎包含了所有方式实现的单例模式,并且能够确保在多线程并发下的线程安全性。 读者可结合本人博客 http://blog.csdn.net/cselmu9?viewmode=list 中的《线程并发之单例模式...
Java多线程--解决单例模式中的懒汉式的线程安全问题
主要为大家详细介绍了java多线程之线程安全的单例模式,文章内容全面,感兴趣的小伙伴们可以参考一下
深入浅出:讲解单例模式,多线程安全和并发访问问题.让你轻松应对面试
登陆人信息缓存,并采用多线程验证, 首先是对单例的使用 第2是多线程模拟登陆,并进行分组缓存 第3是多线程测试在线统计
本工程实现了一种利用静态工厂和单例模式两种模式思路设计的线程相关的单例模式。
今天小编就为大家分享一篇关于Java多线程实战之单例模式与多线程的实例详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
主要介绍了python实现线程安全的单例模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
计算机后端-Java-Java核心基础-第20章 多线程 11. 线程安全的单例模式之懒汉式.avi
Qt两种方法实现多线程的开启,及子线程的安全结束线程,及QMutex加锁,Qt单例化实现
FMDBsharedInstance 多线程环境下使用 FMDB的单例类封装.
史上最安全的单例,你值得拥有。
本资源包含有三个子项目工程,实现的是通过DataSource做数据管理,DataSource是一个单例类,做了测试在不同类中调用单例函数依旧能保证唯一性
Java中懒汉单例设计模式线程安全测试,单例设计模式的测试