文章詳情頁
Java 中的synchronized鎖代碼塊的時候需不需要這個類是單例
瀏覽:209日期:2023-10-25 10:40:31
問題描述
當(dāng)它鎖定一個方法或者一個代碼塊的時候,同一時刻最多只有一個線程執(zhí)行這段代碼。當(dāng)兩個并發(fā)線程訪問同一個對象object中的這個加鎖同步代碼塊時,一個時間內(nèi)只能有一個線程得到執(zhí)行。另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊。
那問題來了,如果兩個線程訪問的是這個對象的不同實例,還會阻塞嗎?
問題解答
回答1:synchronized的用法有以下三種
指定對象加鎖。類似于synchronized (instance) {}。
直接作用于實例方法。相當(dāng)于對當(dāng)前實例加鎖,進(jìn)入同步方法前要獲得當(dāng)前實例的鎖。
直接作用于靜態(tài)方法。相當(dāng)于對當(dāng)前類加鎖,進(jìn)入同步方法前獲得當(dāng)前類的鎖。
對于上面的1、2.必須是同一對象或者同一實例時才會使線程阻塞。
回答2:鎖是加在對象實例上的。加在不同對象上的鎖是不會相互影響的。兩個線程訪問兩個不同對象,是不會相互阻塞的。
標(biāo)簽:
java
相關(guān)文章:
1. javascript - node得到req不能得到boolean2. node.js - nodejs+express+vue3. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。4. mysql時間格式問題5. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?6. python對8000行csv添加列7. DADB.class.php文件的代碼怎么寫8. 使用mysql命令行連接遠(yuǎn)程數(shù)據(jù)庫host跳轉(zhuǎn)9. java - web端百度網(wǎng)盤的一個操作為什么要分兩次請求服務(wù)器, 有什么好處嗎10. python 字符串匹配問題
排行榜

熱門標(biāo)簽
網(wǎng)公網(wǎng)安備