国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java - 讀寫鎖中 寫鎖的降級問題

瀏覽:103日期:2023-11-08 15:16:38

問題描述

java - 讀寫鎖中 寫鎖的降級問題

寫鎖降級的時候 要求當前已經獲取到寫鎖的線程把持住寫鎖,然后獲取讀鎖,隨后釋放寫鎖。

那么為什么要求把持住寫鎖呢??

上圖中提到 “ 那么當前線程無法感知線程T的數據更新 ” 這個如何理解。如果線程T獲取到了寫鎖,然后對數據進行了更新,在沒有釋放寫鎖之前,當前線程無法感知到數據的更新,這個是沒問題的吧,但是一旦線程T釋放 寫鎖,那么當前線程就可以感知到數據的更新了,這里理解應該沒問題吧?

help me to explain,thx

問題解答

回答1:

這是在解釋鎖降級吧,首先寫鎖是獨占的,讀鎖是共享的,然后讀寫鎖是線程間互斥的,鎖降級的前提是所有線程都希望對數據變化敏感,但是因為寫鎖只有一個,所以會發生降級。如果先釋放寫鎖,再獲取讀鎖,可能在獲取之前,會有其他線程獲取到寫鎖,阻塞讀鎖的獲取,就無法感知數據變化了。所以需要先hold住寫鎖,保證數據無變化,獲取讀鎖,然后再釋放寫鎖。

回答2:

寫鎖不允許其他進程的讀寫操作,讀鎖的允許讀操作。就按你抓圖的例子來看,當你釋放寫鎖后,T進程獲取了寫鎖,這時你就無法獲取讀鎖了,所以要先獲取讀鎖后,再釋放寫鎖。

首先你沒理解讀寫鎖的意義,讀鎖的存在意味著不允許其他寫操作的存在。按照你提供的例子,可能存在一個事務線程不希望自己的操作被別的線程中斷,而這個事務操作可能分成多部分操作更新不同的數據(或表)甚至非常耗時。如果長時間用寫鎖獨占,顯然對于某些高響應的應用是不允許的,所以在完成部分寫操作后,退而使用讀鎖降級,來允許響應其他進程的讀操作。只有當全部事務完成后才真正釋放鎖。按你的理解如果當中寫鎖被其他線程占用,那么這個事務線程將不得不中斷等待別的寫鎖釋放。

回答3:

“ 那么當前線程無法感知線程T的數據更新 ”

T1 讀取 數據 Data時,將數據值復制到當前線程的上下文,因此其他線程沒有辦法感知數據是否更新。只要當數據提交內存中,即Heap中,其他線程才可以得到最新值。

標簽: java
相關文章:
主站蜘蛛池模板: 日本a级片免费看 | 高清日本在线成人免费视频 | 欧美一级久久久久久久久大 | 亚洲男人的天堂在线视频 | 欧美精品午夜久久久伊人 | 91看片淫黄大片.在线天堂 | 久久久网站 | 欧美日韩国产亚洲一区二区 | 色狠狠色综合吹潮 | 久久亚洲精品无码观看不卡 | 成人看片黄a毛片 | 欧美成人免费观看国产 | 深夜福利视频在线观看 | 日本一区二区三区四区不卡 | 最新三级网站 | 亚洲高清在线观看播放 | 97在线免费 | 肥婆毛片 | 99精品观看 | 国产毛片a精品毛 | 三级大片网站 | 色偷偷88欧美精品久久久 | 亚洲国产高清一区二区三区 | 欧美一级片免费观看 | 草视频在线观看 | 亚洲精品一区二区三区 | 亚洲天堂.com | 看美女毛片 | 在线亚洲精品中文字幕美乳 | 久久99精品视频在线在线观看 | 国产精品国产亚洲精品看不卡 | 国产一区二区三区免费大片天美 | 亚洲精品久久9热 | 亚洲综合成人网在线观看 | 亚洲天堂在线观看视频 | a毛片a毛片a视频 | 欧美成人性色生活片天天看 | 国产成人精品免费视频 | 国产精品视频999 | 久久久久久久久久免免费精品 | 日本三级香港三级三级人 |