1.為什麼要使用多執行緒?
充分利用cpu資源,併發去做多個事情
2.單核cpu機器適不適合用多執行緒?
適合,如果是單執行緒,執行緒中需要等待io,此時cpu就空閒出來了
3.執行緒什麼時候讓出cpu?
阻塞時,wait,await,等待io,sleep,yield,結束了
4.執行緒是什麼?
程序的最小執行單元,執行任務(一組**)。
5.cpu做的是什麼工作?
執行**(計算)
6.執行緒是不是越多越好?
不是。看場景。建立時間+銷毀時間《執行時間
7.如何正確使用多執行緒?
多的話用執行緒池,少的話用new thread.
看任務型別 執行緒池大小:
計算型:cpu數量1.5倍
io型 :阻塞執行緒的時長的20~30倍
8.執行緒池有什麼?
倉庫,任務,執行緒
9.執行緒池要做哪些事情?
接收任務,放入倉庫
工作執行緒從倉庫取任務,執行
當沒有任務時,執行緒阻塞,當有任務時喚醒執行緒執行
10.blockingqueue
丟擲異常;特殊值;阻塞,超時
插入:add(e),offer(e),put(e),offer(e,time,unit)
移除:remove(),poll(),take(),poll(time,unit)
檢查:element().peek(),不可用,不可用
11.實現自定義固定執行緒池步驟:
完成池的構造元素的初始化,
完成提交任務方法,如果倉庫滿了,就返回false
完成執行緒中取任務,執行
完成關閉功能,關閉後。不再接受新的任務,待現完成的任務都完成後,所有執行緒都結束。
12.實現小功能:實現乙個有最小,最大的執行緒數的執行緒池,空閒執行緒60秒則銷毀。
執行緒池的理解
原來一直對執行緒池心存疑惑.第乙個疑惑是.執行緒類在例項化的時候就已經指定了run函式了,也就是說,乙個執行緒在例項化的時候,他能做什麼就已經定下來了,要做別的事,就要新開乙個執行緒.這感覺就和執行緒池的思想違背了,怎麼樣從執行緒池裡面拿乙個執行緒出來就可以執行呢?執行完了然後再放回去呢?第二個疑惑...
執行緒池的理解
學校組織體檢,有一項內容是抽血化驗.抽血是在乙個房間 執行緒池 裡進行,假設 房間裡面有6個核心視窗進行抽血 corepoolsize 如果來抽血化驗的人太多,核心視窗也可以擴容,最大可以擴充套件到10個視窗.maximumpoolsize 其中有6個核心視窗,和4個非核心視窗.非核心視窗在抽血化驗...
理解執行緒池
建立執行緒池的一種方式 threadpoolexecutor threadpoolexecutor new threadpoolexecutor corepoolsize,maximumpoolsize,keepalivetime,unit,workqueue,threadfactory,handl...