執行緒池的理解

2021-09-13 18:58:04 字數 920 閱讀 4327

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...