我想啓動大量任務以在+ -42Mio記錄的數據庫上運行。我想分批運行5000個記錄/時間(結果爲850個任務)。 我也想限制線(16)的Java的數量開始爲我做到這一點,我使用的是當前的代碼來完成這個任務:多線程最佳實踐:約束任務newFixedThreadPool
ExecutorService executorService = Executors.newFixedThreadPool(16);
for (int j = 1; j < 900 + 1; j++) {
int start = (j - 1) * 5000;
int stop = (j) * 5000- 1;
FetcherRunner runner = new FetcherRunner(routes, start, stop);
executorService.submit(runner);
Thread t = new Thread(runner);
threadsList.add(t);
t.start();
}
這是這樣做的正確方法?特別是我印象中的Java剛剛激發了所有任務...(FetcherRunner
器具runnable
)
我確實有......但是我用的是對答時完成我所有的線程,所以我可以繼續處理結果來檢測。你是否建議我應該放棄.submit之後的所有內容? +會不會有問題的,如果我限制maxThreads至10時,我trowing在執行任務900。 – FireFox 2012-07-18 01:46:26
@all,謝謝你的提示,我不知道我是複製線程! @ Biju,yuo是最清楚解釋發生了什麼:) – FireFox 2012-07-18 02:12:57