成人午夜一区二区_操碰在线视频_国产精品麻豆一区二区三区_中文黄色一级片_欧美日本中文字幕_高清视频91

當(dāng)前位置: 首頁 / 技術(shù)干貨 / 正文
好程序員Java培訓(xùn)告訴你Java-線程怎么來的?

2020-09-23

Java培訓(xùn)

  好程序員Java培訓(xùn)告訴你Java-線程怎么來的?并發(fā)處理的廣泛應(yīng)用是使得amdahl定律代替摩爾定律成為計(jì)算機(jī)性能發(fā)展源動(dòng)力的根本原因,是人類壓榨計(jì)算機(jī)運(yùn)算能力的最有力武器。

  并發(fā)并非一定得用多線程,多進(jìn)程也可以,不過java里面談?wù)摬l(fā),大多數(shù)與線程脫不開關(guān)系。因此我們從線程說起。好程序員小編主要在本文介紹了以下內(nèi)容:

  線程的實(shí)現(xiàn) 線程的調(diào)度 線程狀態(tài)切換

  線程的實(shí)現(xiàn)

  線程是比進(jìn)程更輕量級(jí)的調(diào)度執(zhí)行單位,在linux里面,線程和進(jìn)程沒有什么區(qū)別,唯一的就是在地址空間,線程的切換虛擬內(nèi)存空間依然是相同的,但是進(jìn)程切換是不同的。

  目前主流的操作系統(tǒng)都提供的線程實(shí)現(xiàn),java則提供的線程實(shí)現(xiàn)方法都是native的,因?yàn)椴煌挠布筒僮飨到y(tǒng)提供線程調(diào)度方式并不盡相同,所以java沒用采用和平臺(tái)無關(guān)的統(tǒng)一手段來實(shí)現(xiàn)。

  實(shí)現(xiàn)線程的主要3種方式:使用內(nèi)核線程實(shí)現(xiàn),使用用戶線程實(shí)現(xiàn),使用用戶線程加輕量級(jí)進(jìn)程混合實(shí)現(xiàn)。

  內(nèi)核線程實(shí)現(xiàn)

  內(nèi)核線程(KLT)就是直接由操作系統(tǒng)內(nèi)核支持的線程,這種線程由內(nèi)核來完成線程切換。

  程序一般不會(huì)直接使用內(nèi)核線程,而是去使用內(nèi)核線程的一種高級(jí)接口—輕量級(jí)進(jìn)程(LWP),輕量級(jí)進(jìn)程就是我們所講的線程,這種輕量級(jí)進(jìn)程與內(nèi)核線程之間11的對(duì)應(yīng)關(guān)系。

圖片1

  優(yōu)點(diǎn):

  內(nèi)核直接支持,由操作系統(tǒng)內(nèi)核創(chuàng)建和撤銷。內(nèi)核維護(hù)進(jìn)程及線程的上下文信息以及線程切換。一個(gè)內(nèi)核線程由于I/O操作而阻塞,不會(huì)影響其它線程的運(yùn)行。

  缺點(diǎn):

  1、線程的操作、創(chuàng)建、同步等都需要系統(tǒng)調(diào)用,而系統(tǒng)調(diào)用代價(jià)比較高,需要在用戶態(tài)和內(nèi)核態(tài)中來回切換。

  2、每個(gè)輕量級(jí)的進(jìn)程都需要一個(gè)內(nèi)核線程來支持,需要消耗一定的內(nèi)核資源。

  用戶線程實(shí)現(xiàn)

  用戶線程指不需要內(nèi)核支持而在用戶程序中實(shí)現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。

  不需要用戶態(tài)/核心態(tài)切換,速度快,操作系統(tǒng)內(nèi)核不知道多線程的存在,因此一個(gè)線程阻塞將使得整個(gè)進(jìn)程(包括它的所有線程)阻塞。使用用戶線程實(shí)現(xiàn)的程序一般都比較復(fù)雜,java曾經(jīng)用過,不過最后還是放棄了。

  優(yōu)點(diǎn):

  切換由用戶態(tài)程序自己控制內(nèi)核切換,不需要內(nèi)核干涉,少了進(jìn)出內(nèi)核態(tài)的消耗。

  缺點(diǎn):

  多核處理器很難講線程映射到其他處理器上,單線程阻塞會(huì)造成該進(jìn)程阻塞。

  用戶線程加輕量級(jí)進(jìn)程混合實(shí)現(xiàn)

  這種混合模式下,既存在用戶線程,也存在輕量級(jí)進(jìn)程。用戶線程還是完全建立在用戶空間中,因此用戶線程的創(chuàng)建、切換、析構(gòu)等依然廉價(jià),可以支持大規(guī)模的用戶線程并發(fā)。

  操作系統(tǒng)提供支持的輕量進(jìn)程作為用戶線程和內(nèi)核線程之間的橋梁,用戶線程的系統(tǒng)調(diào)用要通過輕量級(jí)線程來完成,大大降低了進(jìn)程阻塞的風(fēng)險(xiǎn)。用戶線程和輕量級(jí)進(jìn)程比是N:M多對(duì)對(duì)的關(guān)系。

  javajdk 1.2之前基于用戶線程實(shí)現(xiàn),在1.2之后,基于操作系統(tǒng)的原生線程模型來實(shí)現(xiàn),在每個(gè)平臺(tái)上都不盡相同,比如在windowslinux下都是采用一對(duì)一的線程模型實(shí)現(xiàn),在Solaris平臺(tái),采用都是一對(duì)一或者多對(duì)多來實(shí)現(xiàn)(solaris 同時(shí)支持一對(duì)一和多對(duì)多)

  線程調(diào)度

  線程調(diào)度主要是指系統(tǒng)為線程分配處理器使用權(quán)的過程,主要分為:協(xié)同式線程調(diào)度和搶占式線程調(diào)度。

  協(xié)同式調(diào)度

  協(xié)同式調(diào)度中線程的執(zhí)行時(shí)間由線程本身來控制,線程把自己的工作執(zhí)行完成以后,主動(dòng)通知系統(tǒng)切換到另一個(gè)線程上。像lua的“協(xié)同歷程”就是如此實(shí)現(xiàn)的。

  優(yōu)點(diǎn):

  實(shí)現(xiàn)簡單,線程把自己的事情干完后進(jìn)行線程切換,切換操作對(duì)線程自己是可知的。無同步問題

  缺點(diǎn):

  線程執(zhí)行時(shí)間不可控制,如果某個(gè)線程出現(xiàn)問題阻塞,會(huì)造成程序阻塞。

  搶占式線程調(diào)度

  搶占式線程調(diào)度中每個(gè)線程由系統(tǒng)來分配執(zhí)行時(shí)間,線程的切換不由線程本身來決定。

  優(yōu)點(diǎn):

  線程的執(zhí)行時(shí)間系統(tǒng)可控,不會(huì)出現(xiàn)單個(gè)線程阻塞造成整個(gè)進(jìn)程阻塞。

  java就是采用搶占式線程調(diào)度,另外,java還可以通過給線程設(shè)置優(yōu)先級(jí)來建議系統(tǒng)給某些線程多分配一點(diǎn)時(shí)間,不過不是很靠譜,線程的調(diào)度最終還是取決的操作系統(tǒng)。

  狀態(tài)轉(zhuǎn)換

  java定義了5中線程狀態(tài),任意一個(gè)時(shí)間點(diǎn),一個(gè)線程有且只有其中一個(gè)狀態(tài)。

好程序員公眾號(hào)

  • · 剖析行業(yè)發(fā)展趨勢(shì)
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開班動(dòng)態(tài)

More+
  • HTML5大前端 <高端班>

    開班時(shí)間:2021-04-12(深圳)

    開班盛況

    開班時(shí)間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時(shí)間:2021-03-22(杭州)

    開班盛況

    開班時(shí)間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時(shí)間:2021-05-10(北京)

    開班盛況

    開班時(shí)間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2020-09-21(上海)

    開班盛況
  • 云計(jì)算開發(fā) <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)

主站蜘蛛池模板: 高潮白浆女日韩av免费看 | 午夜一区二区三区 | 久久国产成人 | 国产一区二区三区久久 | 黄色日b | 在线久草 | 久久久久久高清 | 激情影院免费观看 | 色婷婷综合久久久久中文一区二区 | 91精品久久久久久久99软件 | 一级片黄色 | jizz亚洲女人高潮大叫 | 夜夜操天天操 | 国产成人精品久久久 | 九九精品视频在线观看 | 老头搡老女人毛片视频在线看 | 国内精品久久久久久久97牛牛 | 99视频在线看 | 国产高清在线精品一区二区三区 | 久久久久久影院 | 亚洲国产日韩精品 | 日韩a级| 欧美日韩中文字幕在线视频 | 欧洲一区 | av色资源 | 亚洲天堂中文字幕 | 亚洲欧美日韩国产 | av高清在线观看 | 成人久久久久久 | 国产精品自拍视频 | 粉嫩久久99精品久久久久久夜 | 在线观看国产精品视频 | 久久五月婷 | 久久精品亚洲国产 | 亚洲福利在线观看 | 亚洲日本久久 | 中文字幕一区二区三区精彩视频 | 亚洲免费影院 | 亚洲精品国产综合区久久久久久久 | 日本 欧美 国产 | 国产精品久久久久久久9999 |