文章詳情頁
Java 中的synchronized鎖代碼塊的時候需不需要這個類是單例
瀏覽:123日期:2023-10-25 10:40:31
問題描述
當(dāng)它鎖定一個方法或者一個代碼塊的時候,同一時刻最多只有一個線程執(zhí)行這段代碼。當(dāng)兩個并發(fā)線程訪問同一個對象object中的這個加鎖同步代碼塊時,一個時間內(nèi)只能有一個線程得到執(zhí)行。另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊。
那問題來了,如果兩個線程訪問的是這個對象的不同實(shí)例,還會阻塞嗎?
問題解答
回答1:synchronized的用法有以下三種
指定對象加鎖。類似于synchronized (instance) {}。
直接作用于實(shí)例方法。相當(dāng)于對當(dāng)前實(shí)例加鎖,進(jìn)入同步方法前要獲得當(dāng)前實(shí)例的鎖。
直接作用于靜態(tài)方法。相當(dāng)于對當(dāng)前類加鎖,進(jìn)入同步方法前獲得當(dāng)前類的鎖。
對于上面的1、2.必須是同一對象或者同一實(shí)例時才會使線程阻塞。
回答2:鎖是加在對象實(shí)例上的。加在不同對象上的鎖是不會相互影響的。兩個線程訪問兩個不同對象,是不會相互阻塞的。
標(biāo)簽:
java
相關(guān)文章:
1. mysql - 請問數(shù)據(jù)庫字段為年月日,傳進(jìn)的參數(shù)為月,怎么查詢那個月所對應(yīng)的數(shù)據(jù)2. javascript - 求幫助 , ATOM不顯示界面!!!!3. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?4. [python2]local variable referenced before assignment問題5. php - 微信開發(fā)驗(yàn)證服務(wù)器有效性6. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時間會消失是什么情況?7. javascript - [MUI 子webview定位]8. Python2中code.co_kwonlyargcount的等效寫法9. javascript - vue+iview upload傳參失敗 跨域問題后臺已經(jīng)解決 仍然報403,這是怎么回事啊?10. html - 移動端radio無法選中
排行榜

熱門標(biāo)簽