如何在填充FixedThreadPool之间添加延迟

时间:2014-03-14 14:31:14

标签: java multithreading fixed pool setting

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

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。我需要设置执行者。

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用ScheduledExecutorService代替ExecutorService。有关ScheduledExecutorService的文档说明了:

  

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