在 java 方法中执行并行任务

executing parallel task in a java method

我对 java 中的并行编程还很陌生。我写了两个方法,每个方法都并行处理一组数据。方法 A 必须在方法 B 开始之前完成。我想知道执行并行任务的方法何时终止。是吗:

注意: 我用 java visualVM 监视线程,我意识到线程大部分时间都在状态监视器和等待中。

你用 executorservice 标记了它,所以我假设你使用的是 Java ExecutorService。答案完全取决于您的方法。

如果您的方法仅在各自的并行任务上调用 ExecutorService.submit()ExecutorService.execute(),则它们会在所有任务提交后立即退出;当方法退出时,并行任务可能仍在执行。

如果您希望等待与方法关联的所有任务完成,请先为每个任务调用 ExecutorService.submit(),存储 returned Futures。然后,在提交所有任务后,对每个 Futures 调用 Future.get()Future.get() 在相关任务完成之前不会 return,因此一旦对 Future.get() 的所有调用都已 returned,所有任务都已完成,您可以退出该方法并继续进入下一个方法。