gpt4 book ai didi

java - 随着时间的推移,FixedThreadPool 中的执行速度会变慢

转载 作者:行者123 更新时间:2023-12-01 10:00:36 25 4
gpt4 key购买 nike

我有大约 100000 个任务需要完成,我知道它们是 CPU 密集型的,但只需要很短的执行时间(当 CPU 足够快时)。

我使用ExecutorService executor = Executors.newFixedThreadPool(8);

我选择 8,因为我的 CPU 有 8 个核心。

然后为了处理我的任务,我循环遍历所有任务:

for(Task task : tasks) {
executor.submit(new Runnable() {
// 1. Text analyzing
// 2. Add result to a LinkedBlockingQueue
}
}

我观察到,对于前几千个任务,它确实很快。但是呢,说处理完10k个任务之后,速度就越来越慢,越来越慢……

我试图理解但无法弄清楚为什么它逐渐变慢。因为当任务完成时,资源也会被释放。所以我预计处理速度应该是稳定的。

然后我发现问题可能出在我用来存储任务结果的 LinkedBlockingQueue 上。但看来 LinkedBlockingQueue 为插入提供了良好的性能。

有人可以给我一些提示或建议吗?在这种情况下我可能会做错什么?

谢谢。

最佳答案

问题属于LinkedBlockingQueue的性能下降。就我而言,生产者在向队列添加数据方面效率更高,而消费者则处理速度太慢。

Java performance problem with LinkedBlockingQueue

关于java - 随着时间的推移,FixedThreadPool 中的执行速度会变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com