繁体   English   中英

JAVA线程并发

[英]JAVA Thread Concurrency

我正在使用ExecutorService启动多个线程。

  • 线程A
  • 螺纹B
  • 线程C和
  • 螺纹D
  • ....
  • ....线程N

所有线程同时启动。 我正在使用ConcurrentHashMap存储线程A,线程B,线程C的结果,以后线程D可以使用它。

现在,当线程D从线程A寻找输出时,线程A仍在执行中。

这适用于线程C,它可能取决于线程D的输出

或线程N可能取决于线程N-1或线程N-4等任何线程的输出...

什么是处理这种情况或使线程A等到其他线程准备就绪并输出的最佳方法?

我建议让三个产生结果的任务排队到同一执行程序或另一执行程序中。 这样,线程D仅在有事情要做时才起作用。

更好的选择可能是让线程A立即处理自己的工作(与线程B和C相同),在这种情况下,您不需要线程D。

听起来像您想使用join。 启动后加入线程将有效地使您的程序以线性方式运行。 线程A运行之后,线程A运行,然后运行B,然后运行C,然后运行D,然后寻找前三个线程的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM