多线程信号量计数CountDownLatch
定义
通过这个类可以记录当前线程个数。
全称
import java.util.concurrent.CountDownLatch;
实例
主线程
CountDownLatch threadSignal = new CountDownLatch(Common.PARTPOINT);
for(int i=0; i < Common.PARTPOINT; i++){
P2PointThread ppt = new P2PointThread(threadSignal, i);
ppt.start();
}
try {
logger.debug("开始等待");
threadSignal.await(5000, TimeUnit.SECONDS); //当信号量为0时,主线程才可以继续执行,否则一直等待
logger.debug("结束等待");
} catch (InterruptedException e) {
e.printStackTrace();
}
工作线程
当工作线程执行结束时,加入threadSignal.countDown();//一定要放在run方法的最后一行。