我正在使用ExecutorService启动多个线程。
所有线程同时启动。我使用ConcurrentHashMap来存储线程A,线程B,线程C的结果,这些结果可以在未来的线程D中使用。
现在,当线程D正在寻找线程A的输出时,线程A可能仍在执行中。
这适用于可能依赖线程D输出的线程C。
或线程N,它可能依赖于任何线程的输出,如线程N-1,或线程N- 4等。
处理这种情况或让线程A等待其他线程准备好输出的最佳方法是什么?
发布于 2013-12-18 23:58:07
我建议有三个任务产生结果,这些任务被排到同一个执行器或另一个执行器中。这样,线程D只在有事情要做的时候才能工作。
一个更好的选择可能是线程A立即处理自己的工作(线程B&C也是如此),在这种情况下,您不需要线程D。
发布于 2013-12-18 23:59:00
听起来你想用联接。启动后连接线程将有效地使您的程序以一种小插曲的方式运行。线程A运行,然后B,然后C然后D将寻找前3个线程的结果,一旦线程C已经完成。
https://stackoverflow.com/questions/20670969
复制相似问题