Java多线程之单例模式(线程安全)
2023-09-11 14:19:57 时间
1 package org.study2.javabase.ThreadsDemo.sync; 2 3 /** 4 * @Auther:GongXingRui 5 * @Date:2018/9/20 6 * @Description: 单例模式 - 二次确认,提高效率 7 **/ 8 public class DanDemo { 9 public static void main(String args[]) { 10 Dan dan1 = new Dan(); 11 Dan dan2 = new Dan(); 12 dan1.start(); 13 dan2.start(); 14 } 15 } 16 17 class Dan extends Thread { 18 @Override 19 public void run() { 20 System.out.println(JVM.getInstance()); 21 } 22 23 } 24 25 /** 26 * 单例模式 - 懒汉式 27 */ 28 class JVM { 29 private static JVM instance = null; 30 31 private JVM() { 32 33 } 34 35 // 二次确认提高效率 36 public static JVM getInstance() { 37 if (null == instance) { // 提高效率 38 synchronized (JVM.class) { 39 if (null == instance) { // 安全 40 instance = new JVM(); 41 } 42 } 43 } 44 return instance; 45 } 46 47 public static JVM getInstance2() { 48 synchronized (JVM.class) { 49 if (null == instance) { 50 instance = new JVM(); 51 } 52 } 53 return instance; 54 } 55 56 public static synchronized JVM getInstance1() { 57 if (null == instance) { 58 instance = new JVM(); 59 } 60 return instance; 61 } 62 } 63 64 /** 65 * 单例模式 - 饿汉式 66 * 线程安全 67 */ 68 class JVM2 { 69 private static JVM2 instance = new JVM2(); 70 71 private JVM2() { 72 73 } 74 75 public static JVM2 getInstance() { 76 return instance; 77 } 78 }
相关文章
- [Java基础] java多线程关于消费者和生产者
- java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)
- Java中的多线程你只要看这一篇就够了
- java学习笔记14--多线程编程基础1
- Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
- java实现取字母组成串
- java实现第六届蓝桥杯熊怪吃核桃
- Java实现 蓝桥杯 算法训练 关联矩阵
- 超大福利 | 这款免费 Java 在线诊断利器,不用真的会后悔!
- (转载)java多态(2)-------Java转型(向上或向下转型)
- java多线程 -- 创建线程的第三者方式 实现Callable接口
- java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列
- java多线程(二)——锁机制synchronized(同步方法)
- Java多线程之Callable接口的实现
- 【JAVA】java中char类型数组用数组名打印结果不是地址值而是数组内容
- Java多线程学习笔记 - 五、Java中线程的生命周期
- Java超类-java.lang.object
- Atitit。监听键盘上下左右方向键事件java js jquery c#.net
- Java 多线程实现的四种方式
- Java的二十三种设计模式(原型模式(Prototype))
- Java多线程 多个线程之间共享数据
- java并发:读写锁ReadWriteLock
- Java 多线程编程