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

Java callback using ExecutorService threadsafe aggregate total

在我的主要方法中,我声明了 30 个可运行的工作人员,然后向每个工作人员传递了他们需要完成的一些任务。我希望它能实时和汇总报告,并且不要阻止工人的执行。实时报告应该只是一个打印到控制台的一些统计数据

伪代码:

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

逻辑合理,只需使用 AtomicInteger.incrementAndGet() 进行计数即可。

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