java - 多线程通过列表正确

标签 java multithreading

我在多线程方面的经验有限,所以老实说这可能是个糟糕的主意。这是我想要做的:

包含 50 个 URL 的数组列表(示例) 使用 x 数量的线程(例如 5 个)来访问列表中的一系列 URL 调用通用方法来处理 URL(检索 html) 将结果与其他线程结果一起存储在主列表中

现在我坚持用多线程处理ArrayList,我目前的想法是将列表除以列表中有多少个URL,并为每个线程分配一个数字范围来处理例如

线程 1 - 0-7 线程 2 - 8-15

等等

我假设这是一个糟糕的方法,但我真的找不到示例方法。

非常感谢帮助/建议。

最佳答案

  1. 创建一个线程池,其中每个线程处理一个 URL 列表中的时间。
  2. 保留一个全局索引计数器,以便在 线程完成后,它可以从列表中检索下一个 URL 以进行处理。
  3. 这样做直到所有 URL 都被处理,即。 index == list.size()

这样所有线程都得到充分利用,直到作业完成。您可以调整池中的线程数,以针对您的特定运行时环境优化性能。

只需确保您的索引计数器代码是线程安全的。 :)

关于java - 多线程通过列表正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446816/

相关文章:

java - 如果里面 while

c# - 并发受限的 TaskScheduler 会阻塞自身

java编程和java单例多线程问题(单例与多线程)

C++ - 顺序多线程输出

windows - 如何在 WinDbg 中列出线程(内核调试)

java - 这个简单的代码有问题

java - 运行应用程序时的警告

java - 如何从 Java 将数据库连接传递给 Kettle 作业

java - Swing 中 "Container c=getContentPane();"的用途是什么?

java - 从未分配为 null 的 volatile 变量是否可以包含 null?