zoukankan      html  css  js  c++  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();
        }
    }
  • 相关阅读:
    Eclipse在线安装主题(color theme)以及安装color theme第三方主题(图文)
    eclipse快速打开文件目录
    获取项目路径
    阿里巴巴Druid数据源及使用
    project_online
    色区-论坛
    mysql密码
    jre变更目录或修改文件名后报错解决
    9个基于Java的搜索引擎框架
    面试参考
  • 原文地址:https://www.cnblogs.com/Dylansuns/p/6719764.html
Copyright © 2011-2022 走看看