Я пытаюсь выяснить, возможно ли shutdownNow()
ExecutorService, у которого все еще есть задачи в исполнении.О shutdownNow of ExecutorService
public static void main (String []args) throws InterruptedException
{
ExecutorService exSer = Executors.newFixedThreadPool(4);
List<ExecutorThing> lista = new ArrayList<>();
lista.add(new ExecutorThing());
lista.add(new ExecutorThing());
lista.add(new ExecutorThing());
lista.add(new ExecutorThing());
lista.add(new ExecutorThing());
List<Future<Object>> futureList = exSer.invokeAll(lista);
exSer.shutdownNow();
и класс ExecutorThing является следующее:
public class ExecutorThing implements Callable<Object>{
public Object call() {
while (!(Thread.currentThread().isInterrupted()))
for (int i=0;i<1;i++)
{
System.out.println(Thread.currentThread().getName());
}
return null;
}
}
Интересно, почему он никогда не останавливается, даже если я проверить флаг прерывания ... и shutdownNow должны прекратить задачи с помощью interrupt()
.
Где я ошибаюсь?
Заранее спасибо.
PS в this вопрос, который они предлагают в качестве решения, то же самое, что я использовал, однако это не работает для меня. Может быть, потому, что я использую invokeAll?
Заранее спасибо.