import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; public class ExecutorTest3 { public ExecutorTest3() { ExecutorService e = Executors.newSingleThreadExecutor(); Future future = e.submit(new RunnableTask()); System.out.println("RuunableTask is Called"); System.out.println("Future#isDone(): " + future.isDone()); try { System.out.println("Future#get(): " + future.get()); System.out.println("Future#isDone(): " + future.isDone()); } catch (ExecutionException ex) { ex.printStackTrace(); } catch (InterruptedException ex) { ex.printStackTrace(); } e.shutdown(); } class RunnableTask implements Runnable { public void run() { try { Thread.sleep(5000L); } catch (InterruptedException ex) { System.out.println("RunnableTask is Canceled"); return; } System.out.println("RunnableTask is Done."); } } public static void main(String[] args) { new ExecutorTest3(); } }