Java多线程中的单例模式两种实现方式
更新时间:2017年04月30日 11:33:51 投稿:lqh
这篇文章主要介绍了Java多线程中的单例模式两种实现方式的相关资料,需要的朋友可以参考下
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中实现可见性(visibility)的主要方法详解
这篇文章主要介绍了在Java中实现可见性(visibility)的主要方法详解,在Java中,使用关键字volatile和使用锁(如synchronized关键字或 java.util.concurrent包中的锁)来确保对共享变量的修改在多线程环境中能够正确地被其他线程所观察到,需要的朋友可以参考下2023-08-08maven升级版本后报错:Blocked mirror for repositories
本文主要介绍了maven升级版本后报错:Blocked mirror for repositories,文中的解决方法非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-09-09Spring Boot 自动装配原理及 Starter 实现原理解析
SpringBoot通过@SpringBootApplication注解简化了依赖引入和配置,该注解包括@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三部分,感兴趣的朋友跟随小编一起看看吧2024-09-09
最新评论