最近專案裡經常會有一部分大批量資料的校驗處理等對介面響應有要求的情景,這時候往往只能通過多執行緒的方式去處理請求,能達到快速響應
public class taskthreadpoolservice
/** * 多執行緒執行無返回值方法(可指定部分執行緒池引數)
* * @param voidtaskmethodinteface
* @param list
* @param */
public void splitvoidtask(voidtaskmethodinte***cevoidtaskmethodinteface, listlist, int poolsize, int maxsize) throws exception catch (throwable e) finally
});}
} catch (exception e) finally
}/**
* 帶返回值的多執行緒非同步等待所有結果返回的
* 執行緒池大小為20,最大活躍執行緒數50,存活時間為0的無邊界佇列執行緒池
* 單個返回的結果不能返回null,影響結果判定
* * @param futuretaskmethodinteface
* @param list
* @param * @param * @return
* @throws exception
*/public mapsplitfuturetask(futuretaskmethodinte***cefuturetaskmethodinteface, listlist) throws exception
/** * 帶返回值的多執行緒非同步等待所有結果返回的(可指定部分執行緒池引數)
* 單個返回的結果不能返回null,影響結果判定
* * @param futuretaskmethodinteface
* @param list
* @param * @param * @return
* @throws exception
*/public mapsplitfuturetask(futuretaskmethodinte***cefuturetaskmethodinteface, listlist, int poolsize, int maxsize) throws exception catch (throwable e) finally
});futuremap.put(t, future);
}mapresultmap = new hashmap<>(futuremap.size());
//檢測每個執行緒的執行結果,如果有future的返回結果為null,則認為執行失敗
for (map.entry> entry : futuremap.entryset())
resultmap.put(entry.getkey(), entry.getvalue().get());
} catch (exception e)
}return resultmap;
} catch (exception e) finally
}}
多執行緒 多執行緒的專案實戰
充分利用cpu資源 高併發 系統接受實現多使用者多請求的高併發時,通過多執行緒來實現。大任務 大任務處理起來比較耗時,這時候可以起到多個執行緒並行加快處理 例如 分片上傳 比如處理乙個for迴圈時要花費大量時間,就可以考慮多執行緒了 先說一下此功能用到的知識點 執行緒池執行緒 countdownla...
Task 常用的多執行緒 基於多執行緒執行緒
thread 內容多,不易控制。task 好用 必須掌握 1 region private method 2 3 乙個比較耗時耗資源的私有方法 4 5 6private void dosomethinglong string name 7 9long lresult 0 10 for int i 0...
常用多執行緒併發
描述 future futuretask completionservice completablefuture 原理future介面 介面runnablefuture的唯一實現類,runnablefuture介面繼承自future runnable 內部通過阻塞佇列 futuretask介面 jd...