主线程:
//Main主线程
publicclassMainThread {
publicstaticvoid main(String[] args) throwsInterruptedException {
longstartTime = System.currentTimeMillis();
intthreadNum = 5;//线程数
//定义正在运行的线程数
CountDownLatch runningThreadNum = newCountDownLatch(threadNum);
System.out.println(Thread.currentThread().getName()+"-start");
//创建多个子线程
for(inti = 0; i < threadNum; i++) {
newSubThread(runningThreadNum).start();
}
//等待子线程都执行完了再执行主线程剩下的动作
runningThreadNum.await();
System.out.println(Thread.currentThread().getName()+"-end");
longendTime = System.currentTimeMillis();
System.out.println("runningTime:"+(endTime-startTime));
}
}
子线程:
//子线程
publicclassSubThread extendsThread{
//子线程记数器,记载着运行的线程数
privateCountDownLatch runningThreadNum;
publicSubThread(CountDownLatch runningThreadNum){
this.runningThreadNum = runningThreadNum;
}
@Override
publicvoidrun() {
System.out.println(Thread.currentThread().getName()+"-start");
System.out.println(Thread.currentThread().getName()+"-do something");
System.out.println(Thread.currentThread().getName()+"-end");
runningThreadNum.countDown();//正在运行的线程数减一
}
}