關於Java-ExecutorService 在Java5之後,透過Executor來啟動Thread比用Thread的start()更好。 在此功能中,可以很容易控制Thread的啟動、執行和關閉,還可以很容易管理Thread Pool。
How to use 1 2 class 必須 implements Runnable,並撰寫run() 方法 create java.util.concurrent.ExecutorService 來執行task
ExecutorService 1 2 3 4 5 6 ExecutorService提供了管理终止的方法,以及可追蹤一個或多個非同步task而生成 Future 的方法。 可以關閉 ExecutorService,這將導致其停止接受新task。 關閉後,執行程序將終止,將會沒有任務在執行,也没有任務在等待執行,並且無法提交新任務。 ExecutorService executorService = Executors.newFixedThreadPool(3); executorService.execute(new TestRunnable()); executorService.shutdown();
get task return value 1 2 3 在Java5後,task分兩種:第一種是class implements Runnable,另一種是class implements Callable。 兩者都可以被ExecutorService執行,但是Runnable task没有return value,而Callable task有return value。 且Callable的call()方法只能透過ExecutorService的(<T> task) 方法執行,return 每一個<T>,是表示task等待完成的 Future<T>。
提供以下方法執行task 1 2 3 1.executorService.execute 沒有retuen value 2.executorService.submit 有return value 3.executorService.invokeAny(任一task完成即cancel其它task) 和 executorService.invokeAll(必須所有task都完成)