gpt4 book ai didi

Java 执行器 : Small tasks or big ones?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:26 27 4
gpt4 key购买 nike

考虑一个大任务可以分解为数百个可独立运行的小任务。更具体地说,每个小任务都是发送一个轻型网络请求并决定从服务器收到的答复。这些小任务预计不会超过一秒,并且总共涉及几台服务器。

我想到了两种使用 Executor 框架实现此功能的方法,我想知道哪种方法更好以及为什么。

  1. 创建一些任务,比如 5 到 10 个任务,每个任务涉及执行大量发送和接收。
  2. 为每个发送和接收创建一个任务(Callable 或 Runnable),并安排所有任务(数百个)由执行者运行。

如果我的问题表明我懒于测试这些并亲自看看什么更好(至少在性能方面),我很抱歉。我的问题在寻找这个具体案例的答案时,有一个更普遍的方面。在这种情况下,当您想使用执行器来完成所有调度和其他事情时,创建许多小任务还是将它们分组为数量较少的大任务更好?

最佳答案

is it better to create lots of small tasks or to group those into a less number of bigger tasks?

很难用这样的问题来概括,但在您的情况下,我认为创建一些任务,每个任务执行 5 到 10 件事,然后将其提交给执行程序服务是没有意义的。

我会将所有工作作为一堆单独的小任务提交给 ExecutorService。我认为从对象/代码的角度来看,这会使任务更加清晰。他们不必收集一系列请求/响应,可以集中精力提出一个请求并处理一个响应。

一个异常(exception)情况是您不想向特定服务器发送并发请求。那么让一个任务为特定服务器执行所有请求/响应并为每个服务器提交一个任务是有意义的。

关于Java 执行器 : Small tasks or big ones?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717251/

27 4 0