我有一个场景,其中将有一个包含网站的列表和用于抓取这些网站的代码块。 是否可以实现多线程方式,使每个线程从列表中取出 5 个或更多网站并独立爬取,并确保它们不会使用另一个线程收集的相同网站。
List <String> websiteList;
//crawling code block here
最佳答案
如其他答案中所述,对于这样的要求,您首先应该考虑将您的网站保存在 java.util.concurrent
包中的一种 Java 并发抽象数据类型中,而不是在一份标准 list 。 BlockingQueue 的 drainTo鉴于您希望线程能够一次处理大量站点,该方法听起来正是您正在寻找的方法。
关于java - 共享列表上的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16166310/