【发布时间】:2013-08-28 02:04:28
【问题描述】:
我有一个非常大的ArrayList 对象,它在单个线程中顺利执行。但执行时间是因素。
让我的列表有 50 个元素,我有 3 个线程,
我希望第一个线程处理 0 到 15,第二个线程处理 16 到 31,其余的进程将由第三个线程处理。
有可能吗?
【问题讨论】:
-
“有可能吗?”是的。不过就个人而言,我会使用某种Exectuor 服务,也许是fixed thread pool。这样,执行者可以根据列表中项目的可用性来处理列表......例如......
-
@PulkitSethi:为什么?根据正在完成的工作(我们没有被告知),它可能会快三倍。当然,它也可能更慢......完全取决于工作负载的类型和可用资源(CPU、IO、内存等)。
-
@PulkitSethi - 有时。有时不是。这真的取决于处理是什么。还有你的资源。
-
@PulkitSethi 即使没有多核也不一定是真的。例如,如果“处理”大部分时间都在等待 IO,那么如果您在 1 个 CPU 内核上有多个线程,它仍然会更快。
-
@PulkitSethi - 大多数现代 PC 都是多核的。如今,单核系统是个例外。
标签: java multithreading arraylist