亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

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

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

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

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

help me to explain,thx

問題解答

回答1:

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

回答2:

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

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

回答3:

“ 那么當(dāng)前線程無法感知線程T的數(shù)據(jù)更新 ”

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 国产免费91 | 成人啪啪网站 | 精品国产97在线观看 | 草免费视频 | 国产短视频精品一区二区三区 | 碰碰久久| 不卡一级毛片免费高清 | 国产精品亚洲专区在线观看 | 午夜一级黄色片 | 久久国产乱子伦精品在 | 亚洲色图偷拍 | 中文字幕在线第一页 | 亚洲狠狠婷婷综合久久蜜桃 | 一级黄录像 | 国产精品精品国产一区二区 | 看日本真人一一级特黄毛片 | 国产一级爱做片免费观看 | 色婷婷久久合月综 | 91久久国产综合精品 | 国产精品视频网站 | 欧美线人一区二区三区 | 国内精品999| 国产 日韩 欧美 亚洲 | 日本r级在线 | 一级黄视频 | 91麻豆视频在线 | 高清国产精品久久 | 国产酒店自拍 | 福利片视频区 | 网站在线看 | 国产精品久久久久国产精品 | 欧美精品国产综合久久 | 激情欧美成人狠狠色金八天国 | 中文字幕最新中文字幕中文字幕 | 亚洲一区免费视频 | 国产精品1024在线永久免费 | 操操操综合 | 国产精品视频流白浆免费视频 | 香蕉视频免费看 | 久久精品视频18 | 欧美一区二区三区四区视频 |