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