久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Java領域中的線程機制-線程(二)

Java領域中的線程機制-線程(二)

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-08-03 15:41:48 1659512508

  基本模型

1

  由于Java 中,JVM主要是由C/C++實現(xiàn),所以Java層線程最終還是會映射到JVM層線程,而Java層的線程到操作系統(tǒng)層線程就得需要看具體的JVM的具體實現(xiàn)來決定。

  一般來說,我們都把用戶線程看作更高層面的線程,而內核線程則向用戶線程提供支持。

  由此可見,用戶線程和內核線程之間必然存在一定的映射關系,不同的操作系統(tǒng)可能采取不同的映射方式。

  一般來說,按照映射方式來看,主要可以分為:多對一映射(用戶級方式),一對一映射(內核級方式) 和多對多映射(組合方式)3種方式。其中:

  1. 多對一映射(用戶級方式)

  多對一映射是指多個用戶線程被映射到一個內核線程上。每一個進程都對應著一個內核線程,進程內的所有線程也都對應著該內核線程。

2

  多對一映射模型是指多條用戶線程映射同一條內核線程的情況,其中用戶線程由庫調度器進行調度,而內核線程由操作系統(tǒng)調度器來完成。

  對于用戶線程而言,其會按照一定的策略輪流執(zhí)行,具體的調度算法有庫調度器完成。

  任意一個時刻每一個進程中都只有一個用戶線程被執(zhí)行,它們的執(zhí)行都由用戶態(tài)的代碼完成切換。

  在不支持線程的操作系統(tǒng)中有庫來實現(xiàn)線程控制,用戶線程創(chuàng)建,銷毀,切換的開銷代價比內核線程小。

  因此,這種模式特點主要有兩點:

  首先,可以節(jié)省內核態(tài)到用戶態(tài)切換的開銷

  其次,線程的數量不會受到內核線程的限制

  但是,因為線程切換的工作是由用戶態(tài)的代碼完成的,所以一個進程內,如果當一條線程發(fā)生阻塞時,與該內核線程對應的進程內的其他所有的用戶線程也會一起陷入阻塞。

  2. 一對一映射(內核級方式)

  一對一映射是指每個用戶線程都會被影射到一個內核線程上,用戶的整個生命周期都綁定到所映射的內核線程上。一個進程內可以有一個用戶線程和至少一個用戶線程,都對應著各自一個和至少一個內核線程,進程內的所有線程也都一一對應著各自內核線程。

3

  一對一映射模型是指一條用戶線程對應著內核中的一條線程的情況,其中用戶線程由庫調度器進行調度,而內核線程由操作系統(tǒng)調度器來完成,而Java中采用的就是這種模型。

  在這種方式下,多個CPU能并行執(zhí)行同一個進程內的多個線程。

  如果進程內的某個線程被阻塞,就可以切換到該進程的其他線程繼續(xù)執(zhí)行,并且能切換執(zhí)行其他進程的線程。

  一對一映射模型是真正意義上的并行執(zhí)行,因為這種模型下,創(chuàng)建一條Java的Thread線程是真正的在內核中創(chuàng)建并映射了一條內核線程的,執(zhí)行過程中,一條線程不會因為另外一條線程的原因而發(fā)生阻塞等情況。

  不過因為是每一個用線程都需要對應一個內核線程,這種直接映射內核線程的模式,所以數量會存在上限。

  并且同一個核心中,多條線程的執(zhí)行需要頻繁的發(fā)生上下文切換以及內核態(tài)與用戶態(tài)之間的切換,所以如果線程數量過多,切換過于頻繁會導致線程執(zhí)行效率下降。

  3. 多對多映射(組合方式)

  多對多映射是指將一對一映射(內核級方式)和多對一映射(用戶級方式)組合起來,通過綜合兩者優(yōu)點來形成的一種映射方式。該方式在用戶空間創(chuàng)建,銷毀,切換,調度線程,但是進程中的多個用戶線程會被影射到若干個內核線程上。

4

  多對多映射模型就可以避免上面一對一映射模型和多對一映射模型帶來的弊端,也就是多條用戶線程映射多條內核線程,這樣即可以避免一對一映射模型的切換效率問題和數量限制問題,也可以避免多對一映射模型的阻塞問題。

  每一個內核線程負責與之綁定的若干用戶線程,進程中的某個線程發(fā)生系統(tǒng)阻塞并不會導致整個進程阻塞,而阻塞該內核線程內的所對應的若干用戶線程,其他線程依舊可以照常執(zhí)行。

  同時,因為用戶線程數量比內核線程數量多,所以能有效減少內核線程開銷。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT