Один пул потоков можно получить, вызвав статический метод newSingleThreadExecutor () класса Executors.
Синтаксис
ExecutorService executor = Executors.newSingleThreadExecutor();
Где метод newSingleThreadExecutor создает исполнителя, который выполняет одну задачу за раз.
пример
Следующая программа TestThread показывает использование метода newSingleThreadExecutor в среде, основанной на потоках.
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(); } } } }
Это даст следующий результат.