主线程:
- //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();//正在运行的线程数减一
- }
- }