gpt4 book ai didi

java - Executors.newFixedThreadPool - 问题

转载 作者:行者123 更新时间:2023-12-01 18:20:19 28 4
gpt4 key购买 nike

我使用了 CopyOnWriteArrayList 集合对象,它包含 1000 个 URL。每个 URL 表示一个文件。

我想使用多线程池机制并行下载这些 URL 文件。

尝试使用以下代码:

    CopyOnWriteArrayList<String> fileList = DataExtractor.getRefLinks();

ExecutorService threadPool = Executors.newFixedThreadPool(4);
CompletionService<String> pool = new ExecutorCompletionService<String>(
threadPool);

for (int i = 0; i < fileList.size() ; i++){
pool.submit(new StringTask(fileList));
}

这相当于访问同一个 URL 4 次。可能做错了什么。您能指出哪里出了问题吗?

我的要求是一次选择4个URL(线程)并开始并行下载它们,直到列表中的所有URL完成下载。

谢谢。

最佳答案

我不知道 StringTask 是什么,但您似乎将完整的 URL 列表传递给它。进行适当的更改以仅提交列表中的单个 URL

pool.submit(new StringTask(fileList.get(i)));

(或者在 fileList 上使用迭代器,以更适合 CopyOnWriteArrayList 为准。)

for (String url : fileList){
pool.submit(new StringTask(url));
}

关于java - Executors.newFixedThreadPool - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810765/

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