Java多线程中的单例模式

一、在多线程环境下创建单例

方式一:

package com.ietree.multithread.sync;

public class Singletion {

private static class InnerSingletion {

private static Singletion single = new Singletion();

}

public static Singletion getInstance() {

return InnerSingletion.single;

}

}

方式二:

package com.ietree.multithread.sync;

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();

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java 多线程的单例模式,Java多线程中的单例模式两种实现方式相关推荐

  1. PCBA加工中常见的两种焊接方式详解

    PCBA加工中常见的两种焊接方式详解 PCBA加工,两种常见的焊接方式就是回流焊和波峰焊,与手动焊接技术相比,自动焊接技术具有减少人为因素的影响.提高效率.降低成本.提高质量等优势,在PCBA加工中, ...

  2. java匿名内部类_java中匿名内部类的两种实现方式

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

  3. python wait until_荐selenium显示等待怎么写之WebDriverWait中until的两种实现方式及原理分析...

    关于显示等待WebDriverWait是什么,可以看selenium-wait源码解析 话不多说,先上实现代码: 第一种实现方式(官方提供): from selenium.webdriver.supp ...

  4. Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)

    第一种代理即Java的动态代理方式上一篇已经分析,在这里不再介绍,现在我们先来了解下GCLIB代理是什么?它又是怎样实现的?和Java动态代理有什么区别? cglib(Code Generation ...

  5. android编程fragment,详解Android中Fragment的两种创建方式

    onCreate():在创建fragment时系统会调用此方法.在实现代码中,你可以初始化想要在fragment中保持的那些必要组件,当fragment处于暂停或者停止状态之后可重新启用它们. onC ...

  6. C语言中字符串的两种定义方式

    我们知道C语言中是没有字符串这种数据类型的,我们只能依靠数组进行存储,即字符数组,而我们定义并且初始化数组有两种方式.下面将给大家介绍这两种方式并且介绍这两种方式的区别: 方式1 前两种是正确的定义方 ...

  7. SAP License:SAP系统中本年利润的两种结转方式

    结转本年利润的方法(SAP使用表解法) 会计期末结转本年利润的方法有表结法和账结法两种. 1.表结法 表结法下,各损益类科目每月月末只需结计出本月发生额和月末累计余额,不结转到"本年利润&q ...

  8. java的login_Java中login的两种实现方式

    方式一:将VO的东西封装到Action里面 编写Action方法 package action; import com.opensymphony.xwork2.ActionSupport; publi ...

  9. Myeclipse中Tomcat的两种部署方式

    一.在Myeclipse软件中部署 1. 在Myeclipse中,创建好工程后,在Myeclipse菜单栏中选择 Windows -> Preferences -> Myeclipse - ...

  10. spring中bean的两种注入方式

    一是依赖注入(构造方法) 二是set注入(属性的set方法) 转载于:https://www.cnblogs.com/l-x-x-y-d-j/p/11355137.html

最新文章

  1. 华中科技大学通报:取消张某某研究生导师资格,调离教师岗位,停止其教师资格...
  2. pyav Invalid data found when processing input (libav.h264: no frame!)
  3. python【Matlibplot绘图库】绘制用于学术论文投稿的黑白图片
  4. Asp.Net 构架(Http Handler 介绍) - Part.2
  5. VS2005工程的Device右边内容为空问题
  6. Python基础入门:高效的集合操作
  7. 每日软件进度报告—12月6日
  8. YUI 的模块信息配置优先级关系梳理
  9. 如何绘制吞吐率曲线图
  10. 解决方案:超卖(Redis原子队列)
  11. 出现问题protected:void __thiscall CTalkCDlg::OnIdok(void)(?OnIdok@CTalkDlg@@IAEXXZ)?
  12. 数据库工作笔记002---Linux下开启,重启,关闭mysql
  13. windows 编写的硬件驱动_黑科技or大势所趋?谈谈手机GPU驱动升级那点事
  14. 简单的jsp代码(登录界面)
  15. LeetCode 罗马数字
  16. psCS6图片文件无法直接拖入的解决方法
  17. Eclipse 各种设置
  18. 常用的sql语句,sql使用大全
  19. 微软 Surface Laptop 系统恢复
  20. c语言编译器uwp版,Win10技巧:注册UWP版文件资源管理器

热门文章

  1. 自动化用户特定实体的访问控制
  2. jboss url路径_在JBoss的服务器端正确解码URL参数
  3. Java数据类型和标识符
  4. Thymeleaf 3 – Thymeleaf 3和Spring MVC快速入门
  5. Hystrix简介– Hello World
  6. Acision推出“ forgeathon” –第一个WebRTC应用挑战
  7. 项目学生:带有Jersey的Web服务服务器
  8. JBoss AS7 JNDI和EJB 3.1命名更改
  9. Google Guava –与Monitor同步
  10. BTrace:Java开发人员工具箱中的隐藏宝石