gpt4 book ai didi

Java线程存储

转载 作者:行者123 更新时间:2023-12-03 23:47:45 25 4
gpt4 key购买 nike

所以,我有一个循环,我在其中创建了数千个线程来处理我的数据。

我检查并存储线程会减慢我的应用程序。

它来 self 的循环:

Record r = new Record(id, data, outPath, debug);
//r.start();
threads.add(r);

//id is 4 digits
//data is something like 500 chars long

它会暂时停止我的 for 循环(一次运行需要一秒或更长时间,太多了!)。

只有 init > duration: 0:00:06.369

将线程添加到 ArrayList > duration: 0:00:07.348


问题:

  • 存储线程的最佳方式是什么?
  • 如何使线程更快?
  • 我是否应该创建线程并使用特殊执行程序运行它们,例如一次运行 10 个,然后再运行 10 个等等? (如果是,那么如何?)

最佳答案

请考虑拥有大量线程并不是很有用。

至少你可以同时执行的线程数等于你的cpu核心数。

最好的方法是重用现有的线程。为此,您可以使用执行器框架。

例如,要创建一个内部最多处理 10 个线程的执行器,您可以执行以下操作:

List<Record> records = ...;

ExecutorService executor = Executors.newFixedThreadPool(10);

for (Record r : records) {
executor.submit(r);
}

// At the end stop the executor
executor.shutdown();

使用与此类似的代码,您还可以提交数千条命令(可运行的实现),但创建的线程不会超过 10 个。

关于Java线程存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34614540/

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