我有一个 Java 项目,我需要在其中并行运行多个项目。我和执行者一起做这件事。问题是,我需要在很多地方使用执行器。我应该赞成传递一些执行程序来完成工作(暂时忘记限制全局线程数)还是在我需要的地方创建执行程序更可取?
最佳答案
您真正需要考虑的是控制运行您创建的任何执行器的线程数量。
您从每个执行程序创建的线程数将是每个提交任务的到达频率和预期持续时间(处理时间)的函数。每个逻辑任务类型都有一个队列允许您为该任务调整执行器,这样您就不会拥有比需要更多的线程,并且您始终可以跟上预期的任务吞吐量。
如果您的应用程序的所有处理阶段都共享一个单一的执行器,那么调优就会变得更加困难。
SEDA是一种典型的并发模式,反射(reflect)了每个处理阶段排队的原则。
在某些情况下,共享执行程序确实有意义,例如不频繁、临时或低优先级的计划任务。
关于java - 我应该限制我拥有的执行者的数量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4105851/