JAVA学习日志——线程池等待所有线程结束

参考: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);

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值