Как добавить задержку между заполнением FixedThreadPool

Как я могу добавить задержку, когда пустая очередь заполняется следующим потоком? Пример:

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++;                      
}

Я отправляю запрос в Google, когда запускаю каждую тему. Если 2 или 3 потока работают одновременно, я блокирую от Google. Если я могу добавить небольшую задержку между заполнением темы. Я буду держаться подальше от блокировки. Я использую Java. Мне нужно для установки на исполнителя.

1 ответ

Решение

Может быть, вы можете попробовать использовать ScheduledExecutorService вместо ExecutorService, Документация о ScheduledExecutorService говорит:

Служба ExecutorService, которая может запланировать выполнение команд после заданной задержки или периодическое выполнение.

Другие вопросы по тегам