import java.util.concurrent.*; public class TestExecutor { public static void main(String[] args) { Thread daemon = new Thread(new MyDaemon()); daemon.setDaemon(true); daemon.start(); // ExecutorService executor = Executors.newCachedThreadPool(); // ExecutorService executor = Executors.newSingleThreadExecutor(); ExecutorService executor = Executors.newFixedThreadPool(2); for (int i = 0; i < 5; i++) { executor.execute(new MyRunnable(i)); } executor.shutdown(); } } class MyDaemon implements Runnable { @Override public void run() { while (true) { Thread.yield(); try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } System.out.println("Daemon is running."); } } }