第三講 執行緒和執行緒池

2021-07-24 02:49:30 字數 858 閱讀 2558

1. 執行緒的建立:

繼承thread類,或者實現runnable介面。

2. 執行緒的狀態轉換:

建立——可執行——執行——阻塞/等待

(1)從建立到可執行,呼叫run()

(2)從可執行到執行,呼叫該執行緒

(3)   執行到等待,呼叫wait(),並釋放鎖,需要notiy()或者notifyall()喚醒

(4)執行到阻塞,呼叫sleep(),不釋放鎖,注意sleep後,

執行緒是回到可執行狀態,並不是執行狀態,什麼時候執行那是由虛擬 機來決定的。

(5)呼叫lock或者synchronize,就進入鎖的等待佇列

另外,yield這個方法是讓當前執行緒回到可執行狀態,以便讓具有相同優先順序的執行緒進入執行狀態

3. 執行緒池

執行緒池引數:核心執行緒數、最大執行緒數、waitqueue等。

當執行緒的核心執行緒數、最大執行緒數、waitqueue都滿了,新來的執行緒將有4種處理方式:

(1)拋棄

(2)空操作

(3)拋棄最老的執行緒

(4)讓呼叫執行緒處理

執行緒池的3種型別如下,主要根據核心執行緒數和最大執行緒數區分:

(1)newcachethreadpool, 核心執行緒數1,最大執行緒數integer.maxnumber

(2) newfixedthreadpool, 核心執行緒數x, 最大執行緒數x, 其中x是使用者自己設定的

(3)newsinglethreadexecuto,核心執行緒數1,最大執行緒數1

這三種型別執行緒池的內部都是通過threadpoolexecutor實現的

第十三章 多執行緒 第三講

第十三章 多執行緒 第三講 五 執行緒排程的方法詳解 sleep 方法是使當前執行緒睡眠指定的毫秒數,執行緒由進行狀態進入不可執行狀態,當指定的毫秒數過去後,如果有正在進行的執行緒,則進入就緒狀態,如果沒有正在進行的執行緒,則繼續執行。釋放cpu的執行權,不釋放鎖。yield 方法是使當前的執行緒暫...

類和物件第三講

類和物件第三講 還是先來繼續介紹建構函式,今天想談談帶引數的建構函式。例 求乙個長寬高分別為 1 12 25,30。2 15,30,21.的長方體的體積。include using namespace std class box box box int h1,int w1,int l1 void b...

第三講 前置知識

啥是前置的知識?應該是一種粗略的大概的,對其進行解。就像平時玩戲,要知道這個遊戲有啥子背景,講的是啥事兒,如何去玩它。包括遊戲中各類的圖示代表什麼個意思,初期對其進行初步的了解。說的好像你很屌的樣子,再屌又咋滴,還不是屌絲乙個,光棍一條,哈哈!你說我,老大咱都要各自照照鏡先吧。我已經夠青出於蘭了,你...