gpt4 book ai didi

java - 使用 ExecutorService 一次运行 1 个线程

转载 作者:行者123 更新时间:2023-11-30 02:45:55 25 4
gpt4 key购买 nike

我正在使用 Selenium 为 Play 商店开发评论提取器。我的代码如下:

public void extract() {

ExecutorService executor = Executors.newFixedThreadPool(this.configurationManager.getNumberOfThreadToUse());

for (String currentApp : appsToMine) {
ArrayList<String> aux = new ArrayList<>();
aux.add(currentApp);
Crawler googlePlayStoreCrawler = CrawlerFactory.getCrawler(this.configurationManager, aux, "google");
executor.execute(googlePlayStoreCrawler);
}
executor.shutdown();
}

这里,Crawler 实现了 Runnable。使用多个线程,其中每个线程打开一个单独的 Firefox 实例,Selenium 会失败,因为网页不可见(它被另一个线程打开的新窗口隐藏)。因此,我尝试一次仅使用 1 个线程来执行所有进程。

而且,如果我使用 newFixedThreadPool 并以 1 作为参数实例化 ExecutorService,则新线程始终会在前一个线程运行时启动。

最佳答案

听起来您根本不需要使用线程。只需通过主线程运行爬虫即可:

for (String currentApp : appsToMine) {
ArrayList<String> aux = new ArrayList<>();
aux.add(currentApp);
Crawler googlePlayStoreCrawler = CrawlerFactory.getCrawler(this.configurationManager, aux, "google");
googlePlayStoreCrawler.run();
}

关于java - 使用 ExecutorService 一次运行 1 个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200148/

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