女人被躁到高潮嗷嗷叫游戏,久久久久亚洲av成人人电影,久久久精品人妻一区二区三区四,久久久久无码精品国产app,免费人成视频在线播放

留求藝—您的留學(xué)規(guī)劃師

java哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖

148次

問題描述:

java哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖求高手給解答

最佳答案

推薦答案

首先,Java中synchronized可以實(shí)現(xiàn)對(duì)對(duì)象加互斥鎖。

其次,我們來聊一聊synchronized互斥鎖的實(shí)現(xiàn)原理。Java虛擬機(jī)中,synchronized支持的同步方法和同步語句都是使用monitor來實(shí)現(xiàn)的。每個(gè)對(duì)象都與一個(gè)monitor相關(guān)聯(lián),當(dāng)一個(gè)線程執(zhí)行到一個(gè)monitor監(jiān)視下的代碼塊中的第一個(gè)指令時(shí),該線程必須在引用的對(duì)象上獲得一個(gè)鎖,這個(gè)鎖是monitor實(shí)現(xiàn)的。在HotSpot虛擬機(jī)中,monitor是由ObjectMonitor實(shí)現(xiàn),使用C++編寫實(shí)現(xiàn),具體代碼在HotSpot虛擬機(jī)源碼ObjectMonitor.hpp文件中。查看源碼會(huì)發(fā)現(xiàn),主要的屬性有_count(記錄該線程獲取鎖的次數(shù))、_recursions(鎖的重入次數(shù))、_owner(指向持有ObjectMonitor對(duì)象的線程)、_WaitSet(處于wait狀態(tài)的線程集合)、_EntryList(處于等待鎖block狀態(tài)的線程隊(duì)列)。當(dāng)并發(fā)線程執(zhí)行synchronized修飾的方法或語句塊時(shí),先進(jìn)入_EntryList中,當(dāng)某個(gè)線程獲取到對(duì)象的monitor后,把monitor對(duì)象中的_owner變量設(shè)置為當(dāng)前線程,同時(shí)monitor對(duì)象中的計(jì)數(shù)器_count加1,當(dāng)前線程獲取同步鎖成功。當(dāng)synchronized修飾的方法或語句塊中的線程調(diào)用wait()方法時(shí),當(dāng)前線程將釋放持有的monitor對(duì)象,monitor對(duì)象中的_owner變量賦值為null,同時(shí),monitor對(duì)象中的_count值減1,然后當(dāng)前線程進(jìn)入_WaitSet集合中等待被喚醒。

java哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖

其他答案

Java語言的關(guān)鍵字,可用來給對(duì)象和方法或者代碼塊加鎖,當(dāng)它鎖定一個(gè)方法或者一個(gè)代碼塊的時(shí)候,同一時(shí)刻最多只有一個(gè)線程執(zhí)行這段代碼。

互斥屬性:即每次只能有一個(gè)線程占用資源。

請(qǐng)求與保持:即已經(jīng)申請(qǐng)到鎖資源的線程可以繼續(xù)申請(qǐng)。在這種情況下,一個(gè)線程也可以產(chǎn)生死鎖情況,即抱著鎖找鎖。

不可剝奪:線程已經(jīng)得到所資源,在沒有自己主動(dòng)釋放之前,不能被強(qiáng)行剝奪。

循環(huán)等待:多個(gè)線程形成環(huán)路等待,每個(gè)線程都在等待相鄰線程的鎖資源。

為你推薦

網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  用戶協(xié)議  |  隱私政策  |  在線報(bào)名  |  網(wǎng)站地圖