多執行緒架構
1 executor
方法:1 executors.
newfixedthreadpool(int);
該方法返回固定執行緒數,執行緒數始終不變,當有乙個任務
提交時,若執行緒池中空閒,則立即執行,若沒有,
則會被暫緩在乙個任務佇列中等待有空閒執行提交。
原始碼:threadpoolexecutor(nthreads
(核心執行緒也就是初始化幾個執行緒)
, nthreads
(最大執行緒數),
0l, timeunit.milliseconds
(每個執行緒執行完任務之後停留能活多久),
new linkedblockingqueue()
(執行緒佇列));
2 executors.
newsinglethreadexecutor()
原始碼:threadpoolexecutor(1, 1,
0l, timeunit.milliseconds,
new linkedblockingqueue()
3 executors.
newcachedthreadpool()
new threadpoolexecutor(0(
初始化執行緒0個), integer.max_value(
無限大),
60l, timeunit.seconds(
快取執行緒池 存活60秒),
new synchronousqueue()
(任務來就執行執行緒,不等待));
4 executors.
newscheduledthreadpool(corepoolsize);
原始碼;threadpoolexecutor(int corepoolsize,
integer.max_value 0,
timeunit.nanoseconds,
new
delayedworkqueue()(多久後執行執行緒 定時器))
例子:scheduledexecutorservice scheduler = executors.newscheduledthreadpool(
1);//初始化乙個執行緒
scheduledfuture<?> scheduletask = scheduler.schedulewithfixeddelay(
執行緒物件,
多久後執行,每隔多久執行一次,
timeunit.seconds(時間單位));
自定義執行緒池 threadpoolexecutor
threadpoolexecutor pool = new
threadpoolexecutor(nthreads
(核心執行緒也就是初始化幾個執行緒)
, nthreads
(最大執行緒數),
0l, timeunit.milliseconds
(每個執行緒執行完任務之後停留能活多久),
new linkedblockingqueue()
(執行緒佇列));
關鍵在最後乙個佇列引數,區分有界佇列和無界佇列的區別。
* 在使用有界佇列時,若有新的任務需要執行,如果執行緒池實際執行緒數小於corepoolsize,則優先建立執行緒,
* 若大於corepoolsize,則會將任務加入佇列,
* 若佇列已滿,則在匯流排程數不大於maximumpoolsize的前提下,建立新的執行緒,
* 若執行緒數大於maximumpoolsize,則執行拒絕策略。或其他自定義方式。
例子 看到**。
MySql函式學習(一)
一 mysql日期和時間函式 1 curdate 返回當前日期 2 curtime 返回當前時間 3 now 返回當前的日期和時間 4 unix timestamp date 返回日期date的unix時間戳 5 week date 返回日期date為一年中的第幾周 6 year date 返回日期...
機器學習數學基礎 (一)
1.1分類 離散值 1.2回歸分析 連續值 資料集分為 訓練集和測試集 訓練集包含n個特徵 feature 和標籤 label 測試集只有特徵沒有標籤。任務就是根據測試集 標籤。2.1聚類 2.2關聯規則 訓練集只有特徵沒有標籤。測試集需要根據已有特徵 標籤。3.1q learning 3.2時間差...
數學建模學習筆記一
評價模型要先將資料標準化處理 模型最後最好有檢驗和靈敏度分析 多目標規劃問題要考慮多種因素之間的影響,最後轉變為線性規劃 linprog命令 指派問題首先進行0 1替換 運籌學問題指的是問題結果是雙方努力的結果 層次分析法最後要進行一致性檢驗,前期可用兩兩比值的方法標準化資料 一般演算法程式都在附件...