欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java多线程中的单例模式两种实现方式

程序员文章站 2024-02-27 17:24:51
java多线程中的单例模式 一、在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public...

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

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