zoukankan      html  css  js  c++  java
  • 单例和多线程

     要保证在多线程环境下的单例模式,有下面两种建议的方式:

    一、静态内部类

    public class Singletion {
        
        private static class InnerSingletion {
            private static Singletion single = new Singletion();
        }
        
        public static Singletion getInstance(){
            return InnerSingletion.single;
        }
        
    }

     二、double check的方式

    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();
        }
        
    }
  • 相关阅读:
    数组乘积更新
    win向linux传文件
    遇到autoreconf: not found
    python thread
    aptitude
    virtualbox安装ubuntu出现“The system is running in low-graphics mode”
    webform用户控件
    LinQ to SQL
    表单验证
    文件上传
  • 原文地址:https://www.cnblogs.com/dongdone/p/5727402.html
Copyright © 2011-2022 走看看