定義了執行已提交runnable任務的物件。該介面提供了一種將任務提交與如何執行每個任務的機制(包括執行緒使用、排程等細節)解耦的方法。它通常使用預先建立執行緒而不是建立執行緒。
例如new thread(new(runnabletask())).start() 每次都建立新執行緒來執行任務。
現在可以使用以下方式來執行任務:
executor executor = anexecutor;
executor.execute(new runnabletask1());
然而,executor介面並不嚴格要求非同步執行,在乙個簡易測試中,executor 可以在呼叫者的執行緒中立即執行提交的任務:
class directexecutor implements executor
}
更典型的情況是,任務在呼叫者的執行緒之外的某個執行緒中執行。下面的執行程式為每個任務生成乙個新執行緒。
class threadpertaskexecutor implements executor
}
許多executor實現對如何以及何時排程任務施加了某種限制。下面的執行程式將任務的提交序列化到第二個執行程式,演示了復合執行程式。
class serialexecutor implements executor
public synchronized void execute(final runnable r) finally
}});
//開啟第乙個任務
if (active == null)
}protected synchronized void schedulenext()
}}
executorservice介面拓展executor功能,這是乙個更廣泛的介面。
threadpoolexecutor類提供可擴充套件的執行緒池實現。
executors類提供了方便的工廠方法。
記憶體一致性效應:在將可執行物件提交給執行程式之前發生的執行緒操作——在它開始執行之前,可能在另乙個執行緒中。
Java多執行緒之Executor框架
executor executor executors.newfixedthreadpool 10 runnable task new runnable executor.execute task executor executors.newscheduledthreadpool 10 schedu...
jdk自帶多執行緒處理神器Executor
我在做乙個系統時,當時遇到乙個情況,就是多個檔案要上傳到一台伺服器上,為了解決效能問題採用多執行緒處理。採用jdk自帶的executor。核心 public static void main string args final countdownlatch end new countdownlatc...
執行緒池框架executor
eexecutor作為靈活且強大的非同步執行框架,其支援多種不同型別的任務執行策略,提供了一種標準的方法將任務的提交過程和執行過程解耦開發,基於生產者 消費者模式,其提交任務的執行緒相當於生產者,執行任務的執行緒相當於消費者,並用runnable來表示任務,executor的實現還提供了對生命週期的...