java - 我应该限制我拥有的执行者的数量吗?

标签 java concurrency executorservice executor

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

最佳答案

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

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

如果您的应用程序的所有处理阶段都共享一个单一的执行器,那么调优就会变得更加困难。

SEDA是一种典型的并发模式,反射(reflect)了每个处理阶段排队的原则。

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

关于java - 我应该限制我拥有的执行者的数量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4105851/

相关文章:

java - 执行器服务: How it acts as watchdog for thread-pools?

java - 如何迭代 Future<List> 对象?

java spring无尽的并发工作

java - ExecutorService 与异步注解

java - 将某物与数据类型(如字符、字符串等)进行比较

java - 在将 tomcat 用于 java web 应用程序的 linux 机器上,当我从 tomcat 运行应用程序时,文件/文件夹创建/修改权限被拒绝的问题

java - JDBC 和 Hive 查询错误 10 或 9

java - 使用时间戳的准备语句需要更多纳秒

java在并发机制中设计任务

java - 禁用或取消部署我的应用程序后计划仍在运行