package cn.hc.sort.thread;
import java.util.concurrent.CountDownLatch;
/**
* 闭锁实例
* Created by yhc on 2015/5/4.
*/
public class TestHarness {
public static long timeTask(int nThreads,final Runnable task) throws InterruptedException {
final CountDownLatch startGate=new CountDownLatch(1);
final CountDownLatch endGate=new CountDownLatch(nThreads);
System.out.println("创建线程.....");
for (int i = 0; i <nThreads ; i++) {
Thread thread=new Thread(){
@Override
public void run() {
try {
startGate.await();
try{
task.run();
}finally{
endGate.countDown();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
}
System.out.println("记录开始执行时间...");
long start=System.nanoTime();
startGate.countDown();
System.out.println("开始执行....");
endGate.await();
System.out.println("执行完毕...");
long end = System.nanoTime();
return end-start;
}
public static void main(String[] args) throws InterruptedException {
long time = timeTask(5,new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getId());
}
});
System.out.println("执行完毕,耗时:"+time+"ms.");
}
}
执行结果
创建线程.....
记录开始执行时间...
开始执行....
11
12
10
14
13
执行完毕...
执行完毕,耗时:1291945ms.