大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java高級(jí)程序員必備的內(nèi)容知識(shí)

Java高級(jí)程序員必備的內(nèi)容知識(shí)

更新時(shí)間:2019-12-26 09:52:06 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3619次

一段時(shí)間沒有回顧多線程相關(guān)知識(shí)了,雖然工作中會(huì)用到一些多線程的內(nèi)容,但都偏向于基礎(chǔ),今天重讀多線程相關(guān)內(nèi)容,發(fā)現(xiàn)有些東西還是需要注意下。這些一般是面試高頻問題奧。

  了解并發(fā)的內(nèi)幕是一個(gè)高級(jí)程序員不可缺少的課程

  Java內(nèi)存模型

  注意,Java內(nèi)存模型(JMM)和JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)不是同一個(gè)概念,還有一個(gè)概念是Java對(duì)象模型下次可以單獨(dú)拿出來說。

  JMM都是圍繞著原子性,可見性,有序性來講的

  JMM定義了JVM如何與計(jì)算機(jī)的內(nèi)存進(jìn)行交互

  線程對(duì)變量的所有操作都需要在工作內(nèi)存中完成,不可直接操作主內(nèi)存。

Java高級(jí)程序員必備的內(nèi)容知識(shí)

  內(nèi)存間的交互操作:

  • Lock,Unlock 主內(nèi)存
  • Read,Write 主內(nèi)存
  • Load,Store 工作內(nèi)存的變量
  • Use,Assign 工作內(nèi)存的變量

  Volatile

  Volatile可以說是Java虛擬機(jī)內(nèi)提供的最輕量級(jí)同步機(jī)制,其只保證,可見性與有序性,不保證原子性。

  可見性:當(dāng)一條線程修改了這個(gè)變量的值,新值對(duì)于其他線程來說是可以立刻得知的,另外兩個(gè)可以實(shí)現(xiàn)可見性的關(guān)鍵字:Synchronized和final

  有序性:如果再本線程內(nèi)觀察,所有的操作都是有序的,如果再一個(gè)線程中觀察另外一個(gè)線程,那么所有的操作都是無序的。

  Java與線程

  并發(fā)不一定依賴多線程,如PHP中常見的多進(jìn)程并發(fā)。Java的Thread類所有關(guān)鍵方法都是聲明為Native的,所以Java并沒有自己實(shí)現(xiàn)線程。

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

  內(nèi)核線程實(shí)現(xiàn)(KLT,Kernel-Level Thread)。程序一般不會(huì)直接使用內(nèi)核線程,而是使用內(nèi)核線程的一種高級(jí)接口,輕量級(jí)進(jìn)程(LWP,Light Weight Process,LWP),先有內(nèi)核線程,才能有輕量級(jí)進(jìn)程。

  缺點(diǎn):各種線程操作,如創(chuàng)建,析構(gòu),及同步需要進(jìn)行系統(tǒng)調(diào)用,而系統(tǒng)調(diào)用的代價(jià)比較高,需要在用戶態(tài)和內(nèi)核態(tài)中來回切換。消耗內(nèi)核資源,一個(gè)系統(tǒng)支持輕量級(jí)的進(jìn)程數(shù)量是有限制的。

  用戶線程實(shí)現(xiàn),廣義上說,一個(gè)線程只要不是內(nèi)核線程,那就可以任務(wù)是用戶線程。用戶線程完全在用戶態(tài)完成,不用內(nèi)核的幫助,可以支持更大的線程數(shù)量。

  缺點(diǎn):沒有內(nèi)核支持,各種操作都比較復(fù)雜?,F(xiàn)在基本棄用了。

  用戶線程 + 輕量級(jí)進(jìn)程,綜合兩者的有點(diǎn),用戶進(jìn)程與輕量級(jí)進(jìn)程數(shù)量比是不定的。

  線程調(diào)度

  協(xié)同式調(diào)度:好處是實(shí)現(xiàn)簡(jiǎn)單,切換操作對(duì)線程自己是可知的,沒有線程同步的問題,線程把自己的事情干完之后才進(jìn)行線程切換。

  缺點(diǎn):如果程序編寫不穩(wěn)定,那么系統(tǒng)不可控制。一個(gè)進(jìn)程堅(jiān)持不讓出CPU執(zhí)行實(shí)現(xiàn),就會(huì)導(dǎo)致系統(tǒng)崩潰。

  搶占式調(diào)度(Java默認(rèn)調(diào)度):每個(gè)線程由系統(tǒng)來分配執(zhí)行和弦,線程的切換不由線程來決定,當(dāng)一個(gè)進(jìn)程出現(xiàn)問題,系統(tǒng)可以殺掉這個(gè)進(jìn)程。

  注意:并不是線程的優(yōu)先級(jí)越高,線程就一定會(huì)優(yōu)先執(zhí)行,只是說優(yōu)先級(jí)高的線程更可能被選擇到。

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

  貼一張圖,好好記:

Java高級(jí)程序員必備的內(nèi)容知識(shí)

  線程安全的實(shí)現(xiàn)方法

  互斥同步,加鎖,悲觀方案,保證共享數(shù)據(jù)同一時(shí)刻只有一個(gè)線程訪問。,互斥是因,同步是果。

  非阻塞同步,CAS,樂觀方案,先進(jìn)行操作,如果沒有其他線程也進(jìn)行操作,那么就操作成功了,如果有其它線程也在操作共享數(shù)據(jù),那么再重試。

  無同步方案,一般為純代碼,有一些特性,如不依賴堆上的公用系統(tǒng)資源

  鎖優(yōu)化

  自旋鎖與自適應(yīng)自旋

  假如共享數(shù)據(jù)只會(huì)持續(xù)很短的一段時(shí)間,為了這段時(shí)間進(jìn)行掛起和恢復(fù)線程并不值得,這時(shí)我們可以讓后面請(qǐng)求鎖的線程稍等一下,讓線程進(jìn)行一個(gè)忙循環(huán)(自旋),這就是所謂的自旋鎖。

  因?yàn)閭冇袝r(shí)不值得共享數(shù)據(jù)到底被鎖了多久,盲目的自旋可能導(dǎo)致性能的損失,JDK1.6之后,系統(tǒng)引入了自適應(yīng)的自旋,及在一次共享數(shù)據(jù)被鎖定時(shí),加入系統(tǒng)多次獲得自旋鎖,系統(tǒng)可以允許線程自旋的次數(shù)更多時(shí)間更久一些。如果多次沒有獲得自旋鎖,那么系統(tǒng)下次可能會(huì)省略掉自旋鎖。

  鎖消除

  對(duì)一些不可能存在共享數(shù)據(jù)競(jìng)爭(zhēng)的鎖進(jìn)行消除。

  鎖粗化

  有時(shí)候多個(gè)操作都對(duì)同一個(gè)對(duì)象加鎖,頻繁的加鎖也會(huì)影響性能,那么系統(tǒng)就把鎖的同步范圍進(jìn)行擴(kuò)展。如StringBuffer()的多個(gè)append操作。

  偏向鎖

  可以理解為偏袒鎖,鎖會(huì)偏向于第一個(gè)獲得它的線程,如果接下來的執(zhí)行過程中,該鎖沒有被其他線程獲取,則持有偏向鎖的線程將永遠(yuǎn)不在需要進(jìn)行同步。

Java高級(jí)程序員必備的內(nèi)容知識(shí)

       以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java高級(jí)程序員必備的內(nèi)容知識(shí)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

       Java全套自學(xué)資料+視頻

       Java自學(xué)視頻教程(免費(fèi)學(xué)習(xí)):http://m.dabaquan.cn/video.html

  Java技術(shù)教程:http://m.dabaquan.cn/tutorial/

  相關(guān)內(nèi)容

  Java程序員如何做到Java架構(gòu)師

  2019Java程序員技術(shù)面試總結(jié)

  Java多線程學(xué)習(xí),深入解析

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一级一片免费播放 | 五月婷视频| 国产亚洲精品sese在线播放 | 中文字幕日韩一区二区 | 中文字幕精品一区二区三区在线 | 天天摸天天操免费播放小视频 | 久热中文字幕在线精品免费 | 久久99精品国产99久久6男男 | 黄色在线观看www | 久久久福利| 亚洲精品一级一区二区三区 | 欧美一级毛片视频 | 欧美一区三区 | 国产美女久久久 | 久久这里有精品视频 | 欧美一级视频在线观看 | 国产高清一区 | 久草在线观看首页 | 色婷婷中文字幕 | 欧美色图一区二区 | 久久国产在线观看 | 四虎永久免费地址 | 久久精品国产福利国产秒 | 国产国语videosex另类 | 亚洲精品国产suv一区88 | 免费毛片一级 | 一区二区不卡在线观看 | 黄色影院在线观看视频 | 青青影院一区二区免费视频 | 成人综合网站 | 欧美精品午夜毛片免费看 | 可以直接看的毛片 | 国产影片中文字幕 | 黄色资源在线观看 | 亚洲人成激情在线播放 | 亚洲综合极品香蕉久久网 | 青青久久精品 | 精品视频 久久久 | 欧美一区二区三区东南亚 | 欧美一级暴毛片 | 夜夜夜夜猛噜噜噜噜噜 |