六 執行緒的實現方式 多執行緒模型

2021-10-19 05:13:14 字數 1191 閱讀 9556

1.執行緒分為使用者級執行緒和核心級執行緒

2.使用者級執行緒由應用程式通過執行緒庫實現,所有的執行緒管理工作都由應用程式負責(包括執行緒切換)

3.使用者級執行緒中,執行緒切換可以在使用者態下即可完成,無需作業系統干預。

4.在使用者看來,是有多個執行緒,但是在作業系統的核心來看,並不意識到執行緒的存在。「使用者級執行緒」就是「從使用者視角所能看到的執行緒」。

5.優缺點:

優點:使用者級執行緒的切換在使用者空間即可完成,不需要切換到核心態,執行緒管理的系統開銷小,效率高。

缺點:當乙個使用者級執行緒被阻塞後,整個執行緒都會被阻塞,併發度不高。多個執行緒必須在多核處理機上並行執行。

6.在使用者級執行緒中,cpu排程的基本單位依舊是程序,並非執行緒

1.核心級執行緒:又稱「核心支撐的執行緒」,是由作業系統支撐的執行緒。大多數的現代作業系統都實現了核心級執行緒,如windows、linux。

2.核心級執行緒的管理工作是由作業系統核心完成。

3.執行緒排程和切換等工作都是由核心負責,因此核心級執行緒的切換必然需要在核心態下才能完成。

4.作業系統會為每個核心級執行緒建立相應的tcb(程序控制塊),通過tcb對執行緒進行管理」。「核心級執行緒」就是從作業系統核心視角看到的執行緒。

5.優缺點:

優點:當乙個執行緒被阻塞後,別的執行緒還可以繼續執行,併發能力強。多執行緒可在多核處理機上並行執行。

缺點:乙個使用者程序會占用多個核心程式,執行緒切換由作業系統核心完成,需要從使用者態變為核心態,因此執行緒管理的成本高,開銷大。

注意:在此種模型下,作業系統只「看得見」核心級執行緒,因為只有核心級執行緒才是處理機分配的單元。

Java多執行緒(六) 執行緒讓步

一 yield 介紹 yield 的作用是讓步。它能讓當前執行緒由 執行狀態 進入到 就緒狀態 從而讓其它具有相同優先順序的等待執行緒獲取執行權 但是,並不能保證在當前執行緒呼叫yield 之後,其它具有相同優先順序的執行緒就一定能獲得執行權 也有可能是當前執行緒又進入到 執行狀態 繼續執行!二 y...

多執行緒複習 六 執行緒的通訊

一 說明 採用一定的方式,讓執行緒之間進行交流,最終達到控制線程的目的 二 通訊中用到的api 注意 以下為object類的方法 1 wait 語法 物件名.wait 注意 該物件為鎖物件,如果鎖物件為this,實際上可以省略 特點 讓當前執行緒等待,直到其他執行緒呼叫了該鎖物件下的notify或n...

執行緒 六 執行緒池

1.可重用的固定集合執行緒池,以共享的無界佇列的方式來執行這些執行緒 executerservice threadpool executors.newfixedthreadpool 3 容納固定的執行緒 這個執行緒就是建立乙個固定大小的執行緒池,等待任務來的時候就取執行緒池中的執行緒進行任務的執行,...