zoukankan      html  css  js  c++  java
  • 多线程单例模式之延迟加载(懒汉模式)

    package com.wz.thread.delay;
    /**
     * 延迟加载/懒汉模式 单例设计模式
     * 使用DCL双检查锁机制,DCL是大多数多线程结合单例模式使用哪个的解决方案
     * @author Administrator
     *
     */
    public class MyObject {
        
        private volatile static MyObject myObject;
        private MyObject() {}
        public static MyObject getInstance() {
            try {
                if(myObject != null) {
                    
                }else {
                    Thread.sleep(3000);
                    synchronized (MyObject.class) {
                        if(myObject == null) {
                            myObject = new MyObject();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return myObject;
        }

    }

    package com.wz.thread.delay;

    public class MyThread extends Thread {
        
        @Override
        public void run() {
            super.run();
            System.out.println(MyObject.getInstance().hashCode());
        }

    }

    package com.wz.thread.delay;
    /**
     * 输出的hascode值相同,说明是同一个对象
     * @author Administrator
     *
     */
    public class Run {

        public static void main(String[] args) {
            MyThread t1 = new MyThread();
            MyThread t2 = new MyThread();
            MyThread t3 = new MyThread();
            t1.start();
            t2.start();
            t3.start();
        }
    }

  • 相关阅读:
    杨老师课堂_VBA学习教程之一键合并所有文件
    无题
    杨老师课堂_VBA学习教程之VBA中使用函数
    杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
    杨老师课堂之JavaScript定时器_农夫山泉限时秒杀案例
    交换机级联,堆叠,集群技术介绍
    IP划分
    光纤
    交换机
    URL中“#” “?” &“”号的作用
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7822323.html
Copyright © 2011-2022 走看看