在单例懒汉设计模式中,当有多个线程访问getInstance方法时会出现线程安全问题:解决方法如下:
/**
* 懒汉式单例模式中的线程访问安全问题
*
* 1.当有多个线程同时访问getInstance方法获得对象时,可能会出现访问资源的错误,所以需要在里面加上动态锁
* 2.由于getInstance方法是静态方法,所以同步锁为Single.class
* 3.加上同步代码块之后可能会导致程序的效率降低,在同步代码块外面判断一次s是否为空。
* @author Yxx
*
*/
public class Single {
private Single(){}
private static Single s = null;
private static Single getInstance() throws InterruptedException{
if(s==null){
synchronized (Single.class) {
if(s==null){
Thread.sleep(10);
s = new Single();
}
}
}
return s;
}
}
分享到:
相关推荐
3.4懒汉式(线程安全,使用同步方法) 9 3.5双重检查实现单例模式 10 3.6使用静态内部类实现单例模式 12 3.7使用枚举类实现单例模式 13 4.单例模式怎么用才合理? 14 4.1测试 14 4.2无边界 15 5.设计模式学习总结: ...
懒汉式—线程安全:加上synchronize之类保证线程安全的基础上的懒汉模式,相对性能很低,大部分时间并不需要同步 饿汉方式。指全局的单例实例在类装载时构建。 [2] 双检锁式。在懒汉式基础上利用synchronize关键字和...
Java设计模式-单例模式详解,包含三种模式式:饿汉,懒汉,登记式,以及线程多同步的处理
懒汉式优化-加锁同步3.DCL双检锁/双重校验锁重排序问题多线程执行时序表volatile 作用优化-基于volatile 的双重检查锁4.IODH按需初始化持有者反射问题私有构造函数异常处理5.枚举实现单例使用推荐 什么是单例? 单例...
java核心技术-多线程的概念及多线程单例设计模式的应用-懒汉模式、饿汉模式、优化懒汉
通过原子操作、线程同步如互斥锁、读写锁、条件变量、信号量等方法解决C++线程安全问题。同时介绍了线程安全的单例,饿汉模式和懒汉模式。对于C++智能指针作出了简要介绍。同时整理了相关的例子帮助理解。适用人群:...
详细,简单易懂的单例模式源码,使用简单易懂的源码对单例模式的八种写法进行详解,包括:饿汉式(静态常量);饿汉式(静态代码块);懒汉式(线程安全);懒汉式(不加锁线程不安全);懒汉式(同步方法,线程安全)...
多线程线程的生命周期线程的同步同步代码块处理实现Runnable的线程安全问题同步代码块处理继承Thread类的线程安全问题同步方法处理实现Runnable的线程安全问题同步方法处理继承Thread类的线程安全问题线程安全的单例...
懒汉模式:懒加载模式 (优化方式:双重校验锁) 优点:节省资源,在需要的时候创建对象。 缺点:线程不安全。获取对象的时候,效率低 最简单的线程安全的方式:同步方法,效率低 更好的的...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...