JAVA多線程框架
隨着硬件的不斷髮展,多核已經成爲主流,多核環境下的多線程問題也隨之而來,爲了使多線程處理更加方便,JDK1.5新增了多線程框架,相關接口和類主要位於java.util.concurrent包下。
多線程框架中比較重要的接口和類有Executors,Executor,ExecutorService,CompletionService,Future,CountDownLauch,Callable,Runnable
Executors功能主要是作爲工廠類,用於創建和管理Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable
Executor,接口,主要功能執行實現Runnable的類
ExecutorService,主要用於管理多線程的整個生命週期,包括啓動,執行,結束線程. 可以提交實現Callable或者Runnable接口的類,會返回一個Future的對象,這個Future對象可以用於簡單的控制Callable對應的線程
Callable,跟Runable類似,同樣是封裝了線程需要的執行任務,執行任務在Callable的call方法中實現,唯一不同的是call方法有一個返回值。提交Callable實例時,會返回Future類的一個實例。通過Future類的實例,我們可以獲取線程結束後(也就是call函數執行完畢)的返回值
CompletionService,CompletionService提供了一種機制,可以理解成維護了一個任務完成隊列,當容器中有任務完成時,會加入到CompletionService的完成隊列中,那麼我們通過CompletionService的take 或者 poll方法,每次都能獲取剩餘任務中最先執行完的任務
實例代碼:
Executor executor = Executors.newFixedThreadPool(10);
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("task executing");
}
};
executor.execute(task);
更多實例代碼: