多執行緒 Executor

2021-10-03 08:27:46 字數 1063 閱讀 1514

定義了執行已提交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的實現還提供了對生命週期的...