久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

Java 中的synchronized鎖代碼塊的時候需不需要這個類是單例

瀏覽:142日期:2023-10-25 10:40:31

問題描述

當它鎖定一個方法或者一個代碼塊的時候,同一時刻最多只有一個線程執行這段代碼。當兩個并發線程訪問同一個對象object中的這個加鎖同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以后才能執行該代碼塊。

那問題來了,如果兩個線程訪問的是這個對象的不同實例,還會阻塞嗎?

問題解答

回答1:

synchronized的用法有以下三種

指定對象加鎖。類似于synchronized (instance) {}。

直接作用于實例方法。相當于對當前實例加鎖,進入同步方法前要獲得當前實例的鎖。

直接作用于靜態方法。相當于對當前類加鎖,進入同步方法前獲得當前類的鎖。

對于上面的1、2.必須是同一對象或者同一實例時才會使線程阻塞。

回答2:

鎖是加在對象實例上的。加在不同對象上的鎖是不會相互影響的。兩個線程訪問兩個不同對象,是不會相互阻塞的。

標簽: java
相關文章:
主站蜘蛛池模板: 大兴区| 霍州市| 长宁县| 孝感市| 九龙坡区| 岳西县| 敖汉旗| 疏勒县| 呼伦贝尔市| 漳州市| 张家口市| 南安市| 金溪县| 丹阳市| 石屏县| 婺源县| 赣榆县| 寿阳县| 山东| 奎屯市| 湖口县| 定西市| 社旗县| 买车| 蚌埠市| 赫章县| 大埔区| 上饶县| 剑川县| 林周县| 龙游县| 诸暨市| 无锡市| 犍为县| 莱州市| 黑龙江省| 大理市| 新干县| 淮南市| 定日县| 丹东市|