Я инициализировал службу exectuor с N потоками. После завершения N потоков я хочу подождать некоторое время, а затем повторно использовать исполнителя с новым экземпляром N потоков. Как мне это сделать?Ожидание завершения потоков в службе исполнителя
Вот пример кода, я использую, что не удается:
int NumberOfThreads=Integer.parseInt(PropertyHandler.getProperty("numberOfThreads"));
ExecutorService executor = Executors.newFixedThreadPool(NumberOfThreads);
log.info("Executor class has been initialized");
while (true) {
jobStack = MrMestri.buildJobs();
log.info("Creating a job stack of the search urls");
if (jobStack.isEmpty())
{
Thread.sleep(10000);
}
else {
int jobToken = 0;
while (jobStack.size() > 0) {
jobToken++;
MrRunnable worker = new MrRunnable(jobStack.pop());
executor.execute(worker);
if (jobToken% Integer.parseInt(PropertyHandler.getProperty("totalTrends")) == 0) {
log.info("All jobs for the clock cycle complete , waiting for next clock cycle to start. Number of jobs completed " + jobToken);
executor.shutdown();
Thread.sleep(milliseconds);
}
Теперь, когда я использую ИСПОЛНИТЕЛЬ завершение работы, нет исполнителя выполнять свои темы. И мои потоки реализуют runnable.
Любая быстрая реакция была бы очень полезной. Спасибо.
Может executor.awaitTermination? –
Ожидание прекращения используется, когда u использует executor.shutdown(). Или, по крайней мере, то, что кажется или когда оно истекает. Я не знаю, в какое время я могу установить там, поскольку некоторые из моих ответов могут занять некоторое время. Поэтому я не думаю, что хочу пойти по этому маршруту. –