使用ExecutorService线程安全聚合总计的Java回调

时间:2015-03-04 06:40:21

标签: java multithreading executorservice

在我的主要方法中,我声明了30个可运行的工作者,然后为每个人传递了他们需要完成的许多任务。我希望它实时报告并作为聚合报告,并且不阻止工作人员的执行。实时报告应该是一个带有一些统计信息的控制台打印件

伪代码:

  1. 创建30名工作人员的线程池。
  2. 为每个工作人员创建x个工作。
  3. 启动计时器以跟踪性能并开始执行每个工作程序。
  4. 每次工作人员完成任务时,它应该回调到main中的一个方法,该方法将增加一个跟踪已完成的数量的int。这必须是线程安全的
  5. 每隔5秒钟,在屏幕上打印出已完成的作业数,直至所有作业完成。

1 个答案:

答案 0 :(得分:1)

逻辑是合理的,只需使用AtomicInteger.incrementAndGet()进行计数,你就可以了。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html