java线程池批量提交任务,Java线程池:拥有大量较小的任务会更好,或者批量较大的任务会更少...

我们目前正在尝试通过在我们的

Java应用程序中使用多线程来调整性能.

我们有一个长期运行的串行任务,我们希望将其拆分为多CPU内核.

基本上我们有列表,让我们说100.000项目/事情要做.

我现在的问题是做得更好:

选项1(伪代码):

for(i = 0; i < 100000; i++){

threadpool.submit(new MyCallable("1 thing to do"))

}

这会将100000个runnables / callables添加到线程池的队列中(当前LinkedBlockingQueue)

或者做得更好:

选项2(伪代码)

for(i = 0; i < 4; i++){

threadpool.submit(new MyCallable("25000 things to do"))

}

我们已经尝试过选项1,虽然我们可以清楚地看到多个线程正在疯狂运行并且还使用了4个CPU核心,但我们没有注意到任何性能提升.但我的感觉是,由于许多任务,选项1中存在一些开销.我们还没有尝试过选项2,但我的感觉是,它可以加快速度,因为开销较少.我们基本上将列表拆分为4个更大的块而不是100000个单个项.

有什么想法吗?

谢谢

你可能感兴趣的:(java线程池批量提交任务)