超时后中止countDownLatch.await()



我使用ExecutorService来实现一个3线程池,并使用CountDownLatch来监视所有线程的完成情况,以便进行进一步处理。

ExecutorService threadExecutor = Executors.newFixedThreadPool(3);
CountDownLatch countDownLatch = new CountDownLatch(3);
AuthorisationHistoryTask task1 =
    new AuthorisationHistoryTask(commonDataThread, countDownLatch );
PreAuthHistoryTask task2 = 
    new PreAuthHistoryTask(userID,sessionID, commonDataThread, countDownLatch );
SettlementHistTask task4 = new SettlementHistTask(commonDataThread,countDownLatch);
Future<Map<String, Object>> futureAuthHistory = threadExecutor.submit (task1);
Future<Map<String, Object>> futurePreAuthHist = threadExecutor.submit (task2);
Future<Map<String, Object>> futureSettleHist = threadExecutor.submit(task4);
threadExecutor.shutdown();
try {
     countDownLatch.await();
}catch (InterruptedException e) { 
     logger.logCommon("InterruptedException",CLASS_NAME);                     
}catch (ExecutionException ex) { 
     logger.logCommon("InterruptedException",CLASS_NAME); 
}

我使用countDownLatch.await()等待所有线程完成。我想这个进程countDownLatch.await()中止的情况下超时说45秒。我该如何实现呢?

使用接受超时的await的重载变体

countDownLatch.await(45, TimeUnit.SECONDS);

相关内容

  • 没有找到相关文章

最新更新