首页 > 开发 > Java > 正文

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

2024-07-13 10:07:21
字体:
来源:转载
供稿:网友

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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表