package com.zhaowd.test.designPattern.singleton;
import java.util.concurrent.CountDownLatch;
import com.zhaowd.test.designPattern.singleton.laze.LazeTwo;
public class Test {
public static void main(String[] args) {
int count = 2000;
final CountDownLatch latch = new CountDownLatch(count);
long time = System.currentTimeMillis();
for(int i = 0;i < count; i ++){
new Thread(){
@Override
public void run(){
//所有线程执行到这里进行阻塞,count=0时,所有线程从该位置同时触发执行
try {
latch.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//饿汉式:在使用前进行初始化,线程安全
// System.out.println(System.currentTimeMillis() + ":" + Hungry.getInstance());
//懒汉式:线程不安全,需要使用synchronized关键字(会较低效率)
// System.out.println(System.currentTimeMillis() + ":" + LazeOne.getInstance());
//懒汉式-内部类/代码块:线程安全的;注意:使用静态内部类注意加载顺序,只有用到才会加载内部类
System.out.println(System.currentTimeMillis() + ":" + LazeTwo.getInstance());
}
}.start();
latch.countDown();
}
System.out.println("总耗时:"+ (System.currentTimeMillis() - time));
}
}
多线程测试用例
最新推荐文章于 2024-10-23 18:35:41 发布