gpt4 book ai didi

java - 增加 Executors.newFixedThreadPool() 中的线程数会减慢速度

转载 作者:行者123 更新时间:2023-12-01 13:42:37 26 4
gpt4 key购买 nike

如果线程数从nThread增加到nThread + 1,速度会降低一半。

ExecutorService executor = Executors.newFixedThreadPool(nThread);

如果我只是将 nThread 设置为 1,它不会使用我的所有核心。这是怎么回事?

我的任务不涉及读取文件或网络。它创建对象并进行计算。但是,它从 vector 读取数据。

多个线程从同一 vector 读取数据会降低性能吗?如果是这样,我该如何解决?

最佳答案

vector 是一种旧的列表实现,它依赖于锁来提供线程安全性。如果多个线程同时访问该 vector ,这些线程将遭受锁争用,这可能就是您现在遇到的情况。

如果仅读取 vector ,我会将其替换为 ArrayList(或数组)。因为没有完成锁定,并且在只读数据结构的情况下不需要锁定。

关于java - 增加 Executors.newFixedThreadPool() 中的线程数会减慢速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592040/

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