等待任何任务完成,然后开始一个新任务

时间:2015-03-02 22:40:02

标签: java multithreading

我想知道如果不使用阻塞队列和类似方法执行我自己的报告实现,我可以尽可能轻松地实现以下方案:

我有K * N个任务,每批N个任务都有点不同。

  1. 提交第一批N个任务(工作在每个任务上同时完成)
  2. 当任何任务完成后,提交一个新任务(从第二批获取)
  3. 重复第二点,直到所有任务完成。

    我应该使用CyclicBarrier并在一个线程等待时提交任务吗?我想我必须使用阻止队列来保证我不会两次提交相同的任务。

1 个答案:

答案 0 :(得分:0)

如果您想确保第一批产品不与第三批产品混合(依此类推),您可以为批次中任务数量初始化的每个批次生成一个CountDownLatch,批次中的任务应该是对应于批处理N-2的锁存器上的await(),当任务完成时,它可以在其相应的锁存器上调用countDown()。