参考:https://blog.csdn.net/q258523454/article/details/81978855
 
自己测试通过的代码片段:
 
 
 
 使用CountDownLatch
 
        // 测试
        int jobNum = 8;
        CountDownLatch countDownLatch = new CountDownLatch(jobNum);
        startTime = System.currentTimeMillis();
        for (int i = 0; i < jobNum; i++) {
            threadPool.execute(
                () -> {
                    try {
                        System.println("job"+i);
                        // 这里写处理任务的代码
                        ...
                        
                    } catch (Throwable e) {
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        e.printStackTrace(new PrintStream(baos));
                        String errorMsg = baos.toString();
                        System.out.println("errorMsg:" + errorMsg);
                    } finally {
                        // 计数器count减少1
                        countDownLatch.countDown();
                    }
                }
            );
        }
        // 等待计数器中的count变为0 
        countDownLatch.await();
        endTime = System.currentTimeMillis(); 
 
 
使用 awaitTermination 
 
	int numThread = 10;
    	
    	milliSeconds1 = System.currentTimeMillis();
    	
    	ExecutorService fixedThreadPool = Executors.newFixedThreadPool(numThread);
		for(int i = 0; i < numThread; i++) {
			fixedThreadPool.execute(new Runnable () {
				
				public void run() {
					
			    	
			    	for(int i = 0 ; i < n/numThread; i++)
			    	{
			    	  //safe=safe && orderRiskCheckRule2(orderData);
			    	  operations(orderData);
			    	}
					
				}
			});
		}
		
    	if(!fixedThreadPool.isShutdown()) {
    		fixedThreadPool.shutdown();
    	}
    	try {
    		fixedThreadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
    		} catch (InterruptedException e) {
    		}
		
    	
    	
    	
    	milliSeconds2 = System.currentTimeMillis();
    	res = (milliSeconds2-milliSeconds1);
    	msg = "CheckRule2 "+n+" times,total time spent: "+res+" milliseconds.";
    	log.info(msg);