【问题标题】:How to add delay between filling FixedThreadPool如何在填充 FixedThreadPool 之间添加延迟
【发布时间】:2014-03-14 14:31:13
【问题描述】:

当空队列被下一个线程填充时,如何添加延迟? 例如:

int numberOfThreads = 55;

private static ExecutorService executor = Executors.newFixedThreadPool(numberOfThreads);

int counter=0;
for(TblHomePageUrl tblHomePageUrl : mainTable)
{
    legalInstituteIDList.add(tblHomePageUrl.getIntLegalInstitutionID());

    WPCrawlerThread wpThread = new WPCrawlerThread(tblHomePageUrl, maxDepth, politenessDelay);
    executor.execute(wpThread);
    threadList.add(wpThread);

    if(counter<=numThreads){
        try {
            Thread.sleep(10000);
        } catch(InterruptedException ex) {}
    }
    counter++;                      
}

我在启动每个线程时向谷歌发送发布请求。 如果 2 或 3 个线程同时运行,我会阻止 Google。如果我可以在填充线程之间添加一个小的延迟。我会远离阻塞。我正在使用java。我需要设置为执行者。

【问题讨论】:

  • 您需要提供更多信息才能获得有用的答案。你使用什么语言?你想达到什么目的?实际问题是什么?你能分享一些代码吗?
  • 你是对的,谢谢你的帮助。这是我的第一个问题,对不起。我编辑了。

标签: java multithreading fixed pool setting


【解决方案1】:

也许您可以尝试使用ScheduledExecutorService 而不是ExecutorService。关于ScheduledExecutorService 的文档说:

一个 ExecutorService 可以安排命令在给定之后运行 延迟,或定期执行。

【讨论】:

  • 感谢您的回答。我解决了我认为的问题。我使用同步方法进行谷歌搜索。我尝试在服务器上尝试,但它必须工作。
猜你喜欢
  • 2016-03-03
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多