国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試官超級喜歡問的 Synchronized 鎖

開發 前端
Synchronized鎖在面試當中難免會遇到,那么如何完美應對面試官角度刁鉆的問題就顯得尤為重要。阿巴阿巴以身作則,給大家貢獻面試經驗。

[[440858]]

前言

最近技術圈子里因log4j的漏洞炸開了鍋。

Synchronized鎖在面試當中難免會遇到,那么如何完美應對面試官角度刁鉆的問題就顯得尤為重要。阿巴阿巴以身作則,給大家貢獻面試經驗。

回家等通知

面試官: synchronized應該了解吧?講講。

阿巴阿巴: 嗯嗯,了解一些,synchronized是Java中的關鍵字,它的作用主要是用來同步,一般叫它同步鎖,一般可以用在方法上,以及代碼塊上。

阿巴阿巴: 用在方法上好像鎖的的對象,用在代碼塊上如果修飾的是對象則鎖的是對象,如果修飾的是類,那么鎖的是該類的所有對象。

面試官: 不錯,那synchronized可以用在構造方法上嗎?上鎖的過程你了解嗎?

阿巴阿巴: 嗯...這個...不太清楚。

面試官: 那可以講一下鎖的優化嗎?

阿巴阿巴: 嗯?鎖還有優化嗎?不是很清楚哦。

面試官: 好的,那今天先面到這里吧,你回去等我通知哈??

阿巴阿巴: 好的。

當場發offer

面試官: synchronized應該了解吧?講講。

阿巴阿巴: 嗯嗯,了解一些,synchronized是Java中的關鍵字,它的作用主要是用來同步,一般叫它同步鎖,一般可以用在實例方法上、靜態方法上以及代碼塊上,主要是維護一個狀態,這個狀態就是同一時刻,只能有一個線程去訪問synchronized修飾的方法或代碼塊。

阿巴阿巴: 用在實例方法上鎖的是調用該方法的對象,用在靜態方法上,鎖的是當前類的所有對象,用在代碼塊上如果修飾的是對象則鎖的是對象,如果修飾的是類,那么鎖的是該類的所有對象。(畫圖強化記憶)

  1. // synchronized用在靜態方法上 
  2. public synchronized static void test01() { 
  3.  
  4. // synchronized用在實例方法上 
  5. public synchronized void test02() { 
  6.  
  7. // synchronized用來修飾對象 
  8. public void test03() { 
  9.     synchronized (this) {} 
  10.  
  11. // synchronized用來修飾當前類 
  12. public void test04() { 
  13.     synchronized (TestSyn.class) {} 

面試官: 不錯,那synchronized可以用在構造方法上嗎?上鎖的過程你了解嗎?

阿巴阿巴: synchronized不能直接加在構造方法上,但是可以在構造方法里使用synchronized的代碼塊。

阿巴阿巴: 上鎖過程這里涉及到JDK版本問題,在JDK1.5及之前的話,synchronized關鍵字經過編譯之后,會在同步塊的前后分別形成monitorenter和monitorexit這倆個字節碼指令,在執行monitorenter指令的時候對象鎖(這個對象鎖包括對象實例或Class對象),如果說獲取的這個對象沒有被鎖定,或者說當前線程已經獲取到該對象的鎖了(synchronized是可重入鎖,即已經獲取到鎖的線程可以再次獲取鎖,而不需要再進行同步),那么就把鎖的計數器加1,

阿巴阿巴: 同樣,如果在執行monitorexit這個指令時,就把鎖的計數器減1,這樣當計數器的值為0時,鎖就被釋放了。倘若線程獲取對象鎖沒成功,那么就會一直阻塞等待直到鎖被釋放。

阿巴阿巴: synchronized重量級鎖的實現是由C++代碼實現的,其中有個ObjectMonitor隊列,下面展示下代碼中的重要屬性。

  1. ObjectMonitor() { 
  2.     _recursions   = 0;     //重入次數 
  3.     _owner        = NULL;  //指向持有ObjectMonitor對象的線程  
  4.     _WaitSet      = NULL;  //調用wait后,線程會被加入到_WaitSet,WaitSet是第一個節點 
  5.     _cxq          = NULL ; //多線程競爭鎖進入時的單向鏈表 
  6.     _EntryList    = NULL ; //等待獲取鎖的線程,會被加入到該列表,_EntryList是第一個節點 

阿巴阿巴: 下面是線程流動圖。

如上圖所示

0 當多個線程同時競爭時,那么這些線程會被放入到EntryList隊列,此時線程處于阻塞狀態

1 當一個線程獲取到了對象的monitor后,那么就可以進入運行狀態,這時候ObjectMonitor對象的/_owner指向當前線程,_count加1表示當前對象鎖被一個線程獲取。

2 當運行狀態的線程調用wait()方法,那么當前線程釋放monitor對象,進入等待狀態,ObjectMonitor對象的/_owner變為null,_count減1,同時線程進入_WaitSet隊列。

3 直到有線程調用notify()方法喚醒該線程,則該線程進入_EntryList隊列,競爭到鎖再進入_Owner區。

4 如果當前線程執行完畢,那么也釋放monitor對象,ObjectMonitor對象的/_owner變為null,_count減1。

阿巴阿巴: 而JDK 1.5版本之前的synchronized,每次加鎖都需要從用戶態(運行用戶程序)切換到內核態(運行操作系統程序、操作硬件等),這種切換對系統資源的消耗是巨大的,因此JDK 1.6版本對synchronized進行了優化,引入了下面這些概念

  • 自旋鎖
  • 自適應性自旋
  • 鎖消除
  • 鎖粗化
  • 偏向鎖
  • 輕量級鎖
  • 重量鎖

面試官: 愿聞其詳

阿巴阿巴: 自旋鎖的引入主要是因為大多數情況下,一個線程占用鎖的時間不會持續很長時間,如果有其他線程競爭,直接將競爭失敗的線程掛起再恢復,顯然這種消耗是巨大的,所以采用一種“觀望”的手段,即讓該線程稍做等待,看看這段時間內占有鎖的線程是否會釋放鎖,這就是自旋。

阿巴阿巴: 然而,自旋也沒能徹底解決該問題,需要考慮到占有鎖的線程對鎖的占用,如果占用過久那么就會導致自旋鎖一直做無用的自選操作,從而消耗CPU資源,因此設置一個自旋的次數閾值顯得尤為重要,這個閾值也需要設置成合適的值,不會過高也不會過低。

阿巴阿巴: 自適應自旋鎖的誕生。自適應的意思就是說自旋的次數或者時間不再固定了,而是由前一次在同一個鎖上的自旋的次數或者時間來決定:如果在同一個鎖對象上,自旋等待剛剛成功獲得過鎖,并且持有鎖的線程正在運行中,那么虛擬機就會認為這次自旋也很有可能再次成功,M某種意義上來說它將允許自旋等待持續相對更長的時間。相反的,如果自旋很少成功獲得過,那在以后要獲取這個鎖時將可能減少自旋時間、或次數,從而來避免浪費CPU資源。

阿巴阿巴: 鎖消除即在同步的代碼中分析發現無論如何都不會出現鎖的競爭,那么就可以將該鎖進行消除,這個分析被稱為逃逸分析,如果有一個段同步的代碼不會被其他線程所訪問到,那么這個同步也是無意義的。

阿巴阿巴: 鎖的粗化指的是如果一段代碼一直在不停的給一個對象進行加鎖、解鎖,比如在循環體中進行加鎖、解鎖操作,就算沒有線程競爭,也會產生巨大消耗的,對于這種情況可以考慮將鎖的范圍擴大,這個過程就是粗化。

阿巴阿巴: 偏向鎖在保證線程安全的情況下,其實不一定會有線程的競爭,也就是不一定會有互斥,如果一個鎖對象沒有其他沒有其他線程競爭,那么JVM會默認其為偏向鎖,偏向鎖默認只有第一個申請鎖的線程會使用鎖且不會有其他線程來競爭鎖,因此,只需要在Mark Word中CAS記錄owner,如果記錄更新成功,則偏向鎖獲取成功,記錄鎖狀態為偏向鎖,以后當前線程等于owner就可以零成本的直接獲得鎖;如果這時候有其他線程競爭,那么偏向鎖就會膨脹為輕量級鎖。

阿巴阿巴: 使用輕量級鎖時,不需要申請互斥量,僅僅將Mark Word中的部分字節CAS更新指向線程棧中的Lock Record,如果更新成功,則輕量級鎖獲取成功,記錄鎖狀態為輕量級鎖;輕量鎖適合于倆個線程交替運行,但是沒有產生實質上得競爭,如果發生了鎖競爭,接下來輕量鎖將膨脹為重量級鎖。

面試官: 講的很好,不錯,可以回去準備后面的面試了??。

阿巴阿巴: 好的。

 

本期面試到此結束,下期阿巴阿巴被問到了更難的對象頭和鎖相關的東西,期待她完美的表現吧!

 

責任編輯:武曉燕 來源: 程序員巴士
相關推薦

2021-12-25 22:31:10

MarkWord面試synchronize

2021-11-08 09:18:01

CAS面試場景

2021-12-02 18:20:25

算法垃圾回收

2024-01-11 08:12:20

重量級監視器

2022-01-05 08:56:20

Vue修飾符面試

2024-03-25 11:03:38

Vue修飾符lazy

2024-03-08 07:53:19

LockMonitor線程

2018-05-10 15:48:47

面試面試官Java

2025-10-31 02:00:00

2020-07-28 00:58:20

IP地址子網TCP

2025-06-03 07:05:00

Linux操作系統Windows

2021-01-06 05:36:25

拉鏈表數倉數據

2010-08-23 15:06:52

發問

2024-08-12 17:36:54

2025-08-04 00:00:00

樂觀讀鎖并發編程共享讀鎖

2022-01-05 09:55:26

asynawait前端

2018-01-19 10:43:06

Java面試官volatile關鍵字

2021-04-21 09:28:17

字節面試官SetTimeout

2023-11-10 08:44:13

分布式鎖分布式系統

2024-06-04 07:38:10

點贊
收藏

51CTO技術棧公眾號

116美女写真午夜一级久久| 97超碰最新| 成人网在线免费视频| 91精品专区| 色总=综合色| 91九色极品视频| 国产视频精品在线| 美国av一区二区| 亚洲精华一区二区三区| 九色porny自拍| 国产成人av在线播放| 亚洲电影天堂av| 中文字幕亚洲欧美日韩2019| 欧洲亚洲精品久久久久| 天堂精品一区二区三区| 制服丝袜成人动漫| 亚洲天天综合| 欧美电影网址| 欧美一区二区色| 亚洲欧洲色图综合| 精品一区欧美| 免费观看黄色网| 国产精品夫妻激情| 午夜精品一区二区三区三上悠亚| 国产欧美高清视频在线| 影音先锋导航| 亚洲aa中文字幕| 欧美日韩中文字幕精品| 免费在线欧美黄色| 日韩脚交footjobhd| 国产美女作爱全过程免费视频| 中文字幕亚洲在线| 国产欧美一区二区精品婷婷| aaa国产精品| 久久综合图片| 日本网站在线观看一区二区三区| 91综合久久爱com| h片在线免费观看| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产大尺度在线观看| 国产精品久久国产精品| 国产精品麻豆久久| 大胆av不用播放器在线播放| 亚洲夜晚福利在线观看| 久久精品人人做人人综合 | 精久久久久久| 色喇叭免费久久综合网| 欧美日韩1区2区3区| 全部av―极品视觉盛宴亚洲| 99亚洲视频| 久久久久久久久国产一区| 粉嫩av一区二区| 成人免费视频在线观看| 亚洲综合影院| 国产精品久久久久久精| 91色在线视频| 日韩欧美国产综合一区 | 在线电影av不卡网址| 久久女同性恋中文字幕| 女优一区二区三区| 在线视频91p| 欧美狂野激情性xxxx在线观| 欧美在线激情视频| 欧美在线|欧美| 国产91精品在线观看| 免费一区二区三区视频导航| 国产秀色在线www免费观看| 一本色道久久88亚洲精品综合| 午夜精品久久久99热福利| 欧洲精品在线观看| 成人免费va视频| 色天天久久综合婷婷女18| wwww亚洲| 美女无遮挡网站| 你懂的网址一区二区三区| 操91在线视频| 色综合久久中文字幕| 国产精品2024| 成人精品影院| 中文在线а√在线8| 三级黄色网址| 在线丝袜欧美日韩制服| 国产成人拍精品视频午夜网站| 日韩美一区二区三区| 国产精品久久久久久久久久免费看 | 欧美va久久久噜噜噜久久| 久久99精品久久久久久国产越南| 成人aa视频在线观看| 精品国产凹凸成av人网站| 成人97在线观看视频| 日本一区二区三区四区在线观看| 色哟哟免费网站| 精品精品欲导航| 国产乱码精品一区二区三区忘忧草 | 日韩av网址在线观看| 国产亚洲综合av| 国产精品久久久久久久久久妞妞 | 日本成人中文字幕| 国产一卡不卡| 婷婷六月国产精品久久不卡| av超碰在线观看| 女人帮男人橹视频播放| 91免费看蜜桃| 欧美高清性猛交| 亚洲成人黄色网| 色综合天天综合在线视频| 国产乱码一区二区三区| 影音先锋亚洲电影| 色婷婷精品视频| 久久毛片亚洲| 麻豆视频在线播放| 超碰在线免费看| 国产原创popny丨九色| 免费日韩av电影| 欧美一级在线播放| 日韩中文字幕国产| 亚洲精品一区二区三区精华液 | h片在线观看视频免费免费| 两个人看的免费完整在线观看| 日韩中文字幕在线视频观看| 亚洲视频欧美在线| 国产伦理久久久| 国产精品扒开腿做| 免费不卡在线观看av| 精品视频在线观看日韩| 欧美久久久影院| 欧美日韩中文字幕综合视频| 最新高清无码专区| 久久蜜桃av一区精品变态类天堂| 看国产成人h片视频| 亚洲精品1区| 天天天综合网| 欧美日韩精品一区二区视频| 国产伦理久久久久久妇女| 国产精品66| 日日夜夜天天综合| 激情国产在线| 国产精品—色呦呦| 羞羞视频在线观看不卡| 久草免费在线观看| 成人18在线| 欧美成人免费| 一区二区三区高清在线视频| 日本调教视频在线观看| av网站免费观看| av网站观看| 99在线免费观看| www.男人的天堂| 很黄很污的网站| 丁香资源影视免费观看| 116极品美女视频在线观看| 五月综合网站| 免费高清成人| 国产午夜视频| 天堂男人av| 丝袜美女写真福利视频| 嫩草视频在线观看| 天堂中文字幕| 色视频在线观看免费| 人成在线免费视频| 亚洲视频一区在线| 亚洲优女在线| 51av在线| 超碰在线公开| 综合日韩av| 你懂得影院夜精品a| 不卡亚洲精品| 麻豆国产一区二区三区四区| 91九色鹿精品国产综合久久香蕉| xvideos.蜜桃一区二区| 国产精品黄网站| 国产99亚洲| 无码一区二区三区视频| 91亚洲国产| 久久久电影免费观看完整版| 高清国产福利在线观看| 日本免费成人网| 无码人妻精品一区二区蜜桃网站| 久久亚洲中文字幕无码| 久久久久久三级| 诱受h嗯啊巨肉高潮| 国产女主播在线直播| 国产激情视频在线观看| 在线高清av| 九九99久久精品在免费线bt| 亚洲天堂日韩在线| 欧美国产91| 蜜臀av性久久久久蜜臀aⅴ | 一区二区久久久久| 亚洲第一福利一区| 欧美老肥妇做.爰bbww| 日韩成人中文电影| 麻豆国产va免费精品高清在线| 69影院欧美专区视频| 亚洲一区二区久久久久久| 日韩午夜视频在线观看| av观看免费在线| 午夜成人影视| 97超碰免费在线| 粉嫩久久久久久久极品|