Учебники

Метод newSingleThreadExecutor

Один пул потоков можно получить, вызвав статический метод newSingleThreadExecutor () класса Executors.

Синтаксис

ExecutorService executor = Executors.newSingleThreadExecutor();

Где метод newSingleThreadExecutor создает исполнителя, который выполняет одну задачу за раз.

пример

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

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();
         }
      }
   }
}

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