java_228_GOF23设计模式_单例模式_反射和反序列化漏铜和解决方案_多线程环境测试_CountDownLatch同步类的使用_练习3

测试 多线程 环境下,5种创建单例模式的效率
在这里插入图片描述
package java_228_GOF23设计模式_单例模式_反射和反序列化漏铜和解决方案_多线程环境测试_CountDownLatch同步类的使用_练习;

import java.util.concurrent.CountDownLatch;

import java_226_GOF23设计模式_单例模式_应用场景_饿汉模式_懒汉模式_练习.SingletonDemo01;
import java_226_GOF23设计模式_单例模式_应用场景_饿汉模式_懒汉模式_练习.SingletonDemo02;
import java_227_GOF23设计模式_单例模式__双重检查锁式_静态内部类模式_枚举式_UML_类图_练习.SingletonDemo03;
import java_227_GOF23设计模式_单例模式__双重检查锁式_静态内部类模式_枚举式_UML_类图_练习.SingletonDemo04;

/**

  • 测试 多线程 环境下,5种创建单例模式的效率
    */
    public class Client04 {

    public static void main(String[] args) throws Exception {

     long start = System.currentTimeMillis();//获取当前时间
     //注意:这里只是计算main线程的开始与结束时间;有可能main线程结束了而其他线程还没结束;时间就不准确;
     
     //第二种方法 CountDownLatch闭锁
     int threadNum = 10;//threadNum线程数
     final CountDownLatch countDownLatch = new CountDownLatch(threadNum);//注意:加final变成常量
     
     
     for(int i=0;i<10;i++){//多个循环
     
     	new Thread(new Runnable(){//匿名内部类;以参数的形式传进来
     		public void run() {//run运行
     			//这是一个循环
     			//调用相关方法
     			for(int i=0;i<100000;i++){
     				 //Object o = SingletonDemo01.getInstance();
     				 //Object o2 = SingletonDemo02.getInstance();
     				 //Object o3 = SingletonDemo03.getInstance();
     				 //Object o4 = SingletonDemo04.getInstance();
     				 Object o5 = SingletonDemo05.INSTANCE;
     				 
     			}
     			countDownLatch.countDown();//countDown倒数计秒;这里报错是因为内部类不能直接使用外部类的局部变量;
     									//内核的局部变量与外部变量生命周期是不一样的;所以要加final  变成常量
     		}
     	}).start();//start开始
     } 
     //第一种方式循环检测其他线程是否结束;老师没做;
      
     //阻塞;等待
     countDownLatch.await();//await等待;main线程阻塞,直到计数器为0,才会往下执行;
     long end = System.currentTimeMillis();//获取结束时间
     System.out.println("总耗时:"+( end -start));
    

    }
    }

//---------------------------------------------
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值