Учебники

ExecutorService Interface

Интерфейс java.util.concurrent.ExecutorService является подынтерфейсом интерфейса Executor и добавляет функции для управления жизненным циклом как отдельных задач, так и самого исполнителя.

Методы ExecutorService

Sr.No. Метод и описание
1

логическое awaitTermination (длительное время ожидания, единица времени)

Блокируется до тех пор, пока все задачи не завершат выполнение после запроса на выключение, или не истечет время ожидания, или текущий поток не будет прерван, в зависимости от того, что произойдет раньше.

2

<T> Список <Future <T >> invokeAll (Коллекция <? Extends Callable <T >> tasks)

Выполняет заданные задачи, возвращая список Фьючерсов с их статусом и результатами, когда все выполнено.

3

<T> Список <Future <T >> invokeAll (Коллекция <? Extends Callable <T >> задач, длительный тайм-аут, блок TimeUnit)

Выполняет заданные задачи, возвращая список Фьючерсов с их статусом и результатами, когда все завершено или истекло время ожидания, в зависимости от того, что произойдет раньше.

4

<T> T invokeAny (Коллекция <? Расширяет Callable <T >> задач)

Выполняет заданные задачи, возвращая результат одного успешно выполненного задания (т. Е. Без исключения), если оно есть.

5

<T> T invokeAny (Коллекция <? Расширяет Callable <T >> задач, длительное время ожидания, блок TimeUnit)

Выполняет заданные задачи, возвращая результат одного успешно выполненного задания (т. Е. Без исключения), если оно выполнено до истечения заданного времени ожидания.

6

логическое isShutdown ()

Возвращает true, если этот исполнитель был закрыт.

7

логическое значение isTermination ()

Возвращает true, если все задачи были выполнены после завершения работы.

8

отключение пустоты ()

Инициирует упорядоченное завершение, при котором выполняются ранее отправленные задачи, но новые задачи не принимаются.

9

List <Runnable> shutdownNow ()

Пытается остановить все активно выполняющиеся задачи, останавливает обработку ожидающих задач и возвращает список задач, ожидающих выполнения.

10

<T> Future <T> submit (Callable <T> задача)

Передает задачу, возвращающую значение, для выполнения и возвращает Future, представляющий ожидающие результаты задачи.

11

Future <?> Submit (Выполняемая задача)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

12

<T> Future <T> submit (Выполненная задача, T результат)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

логическое awaitTermination (длительное время ожидания, единица времени)

Блокируется до тех пор, пока все задачи не завершат выполнение после запроса на выключение, или не истечет время ожидания, или текущий поток не будет прерван, в зависимости от того, что произойдет раньше.

<T> Список <Future <T >> invokeAll (Коллекция <? Extends Callable <T >> tasks)

Выполняет заданные задачи, возвращая список Фьючерсов с их статусом и результатами, когда все выполнено.

<T> Список <Future <T >> invokeAll (Коллекция <? Extends Callable <T >> задач, длительный тайм-аут, блок TimeUnit)

Выполняет заданные задачи, возвращая список Фьючерсов с их статусом и результатами, когда все завершено или истекло время ожидания, в зависимости от того, что произойдет раньше.

<T> T invokeAny (Коллекция <? Расширяет Callable <T >> задач)

Выполняет заданные задачи, возвращая результат одного успешно выполненного задания (т. Е. Без исключения), если оно есть.

<T> T invokeAny (Коллекция <? Расширяет Callable <T >> задач, длительное время ожидания, блок TimeUnit)

логическое isShutdown ()

Возвращает true, если этот исполнитель был закрыт.

логическое значение isTermination ()

Возвращает true, если все задачи были выполнены после завершения работы.

отключение пустоты ()

Инициирует упорядоченное завершение, при котором выполняются ранее отправленные задачи, но новые задачи не принимаются.

List <Runnable> shutdownNow ()

Пытается остановить все активно выполняющиеся задачи, останавливает обработку ожидающих задач и возвращает список задач, ожидающих выполнения.

<T> Future <T> submit (Callable <T> задача)

Передает задачу, возвращающую значение, для выполнения и возвращает Future, представляющий ожидающие результаты задачи.

Future <?> Submit (Выполняемая задача)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

<T> Future <T> submit (Выполненная задача, T результат)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

пример

Следующая программа TestThread показывает использование интерфейса ExecutorService в поточной среде.

Live Demo

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class TestThread {

   public static void main(final String[] arguments) throws InterruptedException {
      ExecutorService executor = Executors.newSingleThreadExecutor();

      try {
         executor.submit(new Task());
         System.out.println("Shutdown executor");
         executor.shutdown();
         executor.awaitTermination(5, TimeUnit.SECONDS);
      } catch (InterruptedException e) {
         System.err.println("tasks interrupted");
      } finally {

         if (!executor.isTerminated()) {
            System.err.println("cancel non-finished tasks");
         }
         executor.shutdownNow();
         System.out.println("shutdown finished");
      }
   }

   static class Task implements Runnable {
      
      public void run() {
         
         try {
            Long duration = (long) (Math.random() * 20);
            System.out.println("Running Task!");
            TimeUnit.SECONDS.sleep(duration);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
   }	   
}

Это даст следующий результат.