1

我有一个 Java 项目,我需要在其中并行运行。我和执行者一起做这件事。问题是,我需要在很多地方使用执行器。我应该倾向于传递一些执行器来完成工作(暂时忘记限制全局线程数)还是最好在我需要的地方创建执行器?

4

2 回答 2

3

您真正需要考虑的是控制您创建的任何执行程序的线程数。

您在每个执行程序上创建的线程数将取决于每个正在提交的任务的到达频率和预期持续时间(处理时间)。为每个逻辑任务类型设置一个队列允许您仅针对该任务调整执行程序,这样您就不会拥有比所需更多的线程,并且您始终可以跟上预期的任务吞吐量。

如果您在应用程序的所有处理阶段共享一个单片执行器,则调整变得更加困难。

SEDA是一种典型的并发模式,它反映了每个处理阶段的队列原则。

在某些情况下,共享执行器确实有意义,例如用于不频繁、临时或低优先级的计划任务。

于 2010-11-05T12:54:38.627 回答
0

没有严格的规则可以告诉您应该使用多少个执行者。一件事,虽然可以推荐。使用一些依赖注入机制或框架来注入执行器实现。这将允许快速轻松地更换和配置使用过的执行器。

于 2010-11-05T12:42:22.123 回答