package com.bjsxt.base.conn011; /** * 多线程单列 第一种写法,最简单。 * @author Administrator * */ public class InnerSingleton { private static class Singletion { private static Singletion single = new Singletion(); } public static Singletion getInstance(){ return Singletion.single; } }
package com.bjsxt.base.conn011; /** * @author Administrator *多线程单列模式第二种写法,两个if判断 */ public class DubbleSingleton { private static DubbleSingleton ds; public static DubbleSingleton getDs(){ if(ds == null){ try { //模拟初始化对象的准备时间... Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (DubbleSingleton.class) { if(ds == null){ ds = new DubbleSingleton(); } } } return ds; } public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { System.out.println(DubbleSingleton.getDs().hashCode()); } },"t1"); Thread t2 = new Thread(new Runnable() { @Override public void run() { System.out.println(DubbleSingleton.getDs().hashCode()); } },"t2"); Thread t3 = new Thread(new Runnable() { @Override public void run() { System.out.println(DubbleSingleton.getDs().hashCode()); } },"t3"); t1.start(); t2.start(); t3.start(); } }
package com.bjsxt.base.conn011; //普通的单列模式多个线程会创建多个对象 public class Singleton { private static Singleton s = null; private void Singleton(){ } public static Singleton getS(){ if(s == null){ try { //模拟初始化对象的准备时间... Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } s = new Singleton(); } return s; } public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println(Singleton.getS().hashCode()); } },"t1").start(); new Thread(new Runnable() { @Override public void run() { System.out.println(Singleton.getS().hashCode()); } },"t2").start(); new Thread(new Runnable() { @Override public void run() { System.out.println(Singleton.getS().hashCode()); } },"t3").start(); } }
相关推荐
本资源描述了C++11 中多线程的创建,C++11中std命名空间中将boost库中的Thread加入,boost多线程从准标准变为标准,其中还介绍了C++ 多线程下的单例模式的使用,本文档为txt文档
C++11实现线程安全的单例代码和测试代码,包含singleton.h,main.cpp,希望帮助到大家。
线程安全的单例模式 线程安全的单例模式 线程安全的单例模式
使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏
这是一个关于多线程下的单例模式优化代码。public class Singleton { private static Singleton instance; private Singleton (){ } public static Singleton getInstance(){ //对获取实例的方法进行同步 if...
设计模式之七种单例模式代码及ppt,包含多线程环境测试和反序列化测试
深入浅出:讲解单例模式,多线程安全和并发访问问题.让你轻松应对面试
本工程实现了一种利用静态工厂和单例模式两种模式思路设计的线程相关的单例模式。
该资源是多线程并发下的单例模式-源码,几乎包含了所有方式实现的单例模式,并且能够确保在多线程并发下的线程安全性。 读者可结合本人博客 http://blog.csdn.net/cselmu9?viewmode=list 中的《线程并发之单例模式...
单例模式的七种写法: 1.第一种(懒汉,线程不安全) 2.第二种(懒汉,线程安全) 3.第三种(饿汉) .....
Java多线程--解决单例模式中的懒汉式的线程安全问题
2、掌握 IDEA 环境下的多线程调试方式。 3、掌握保证线程安全的单例模式策略。 4、掌握反射暴力攻击单例解决方案及原理分析。 5、序列化破坏单例的原理及解决方案。 6、掌握常见的单例模式写法。
主要介绍了python实现线程安全的单例模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为大家详细介绍了java多线程之线程安全的单例模式,文章内容全面,感兴趣的小伙伴们可以参考一下
单例模式三种线程安全的表达方式,其中枚举方式的单例是最安全的
主要演示多线程下的单例模式,分别演示了lock和synchronized两种方案,希望能给大家做一个参考。
计算机后端-Java-Java核心基础-第20章 多线程 11. 线程安全的单例模式之懒汉式.avi
今天小编就为大家分享一篇关于Java多线程实战之单例模式与多线程的实例详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时如何处理这些缺陷。 单例模式适合于一个类只有一个实例的情况,比如窗口管理器...
Java中懒汉单例设计模式线程安全测试,单例设计模式的测试