Как добавить задержку между заполнением 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, которая может запланировать выполнение команд после заданной задержки или периодическое выполнение.