亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

簡單了解Java synchronized關鍵字同步

發布時間:2020-10-16 02:43:09 來源:腳本之家 閱讀:134 作者:shemlothae 欄目:編程語言

 synchronized

synchronized可以用來同步塊,同步方法。同步塊可以用來更精確地控制對象鎖,控制鎖的作用域。(鎖的作用域就是從鎖的獲得到鎖的釋放的時間,而且可以選擇獲取哪個對象的鎖)。但是在使用同步塊機制時,過多的使用鎖也會引發死鎖問題,同時獲取和釋放也有代價。

而同步方法,它所擁有的就是該類的對象,換句話說,就是this對象,而且鎖的作用域是整個方法,這可能導致鎖的作用域太大,有可能導致死鎖問題。同時也可能包括了不需要同步的代碼塊在內,也會降低程序的運行效率。

不管是同步方法還是同步塊,我們都不應該在里面包含無限循環,不然有可能導致獲得鎖之后,無限循環下去,無法釋放獲得的鎖資源,從而導致等待鎖的線程無法獲得,出現死鎖問題。

同步方法

非靜態同步方法

所有的非靜態同步方法使用的都是同一把鎖----實例對象本身,也就是說一個實例對象的非靜態方法獲得鎖之后,此對象的其他非靜態方法必須等待該方法釋放鎖之后才能獲取鎖,而這個類的其他對象可以被獲取,其他對象的非靜態方法使用的是不同的鎖

靜態同步方法

所有的靜態同步方法使用的都是同一把鎖---該類對象本身,這兩把鎖使用的是不同的對象,所以,類的非靜態方法和靜態方法之間不存在鎖競爭。但是一個類的靜態方法之間存在鎖競爭,

同步塊

鎖是可以選擇的,所以只有存在同一把鎖的同步塊才存在鎖競爭,注意!同步塊的鎖是可以選擇的,但不是可以任意選擇的(使用一個引用對象的實例變量不是一個好的選擇,因為同步塊在執行過程中,可能會改變它的值,比如設置為null,而對一個null對象加鎖會發生異常,并且對不同的對象加鎖也違背了使用鎖的初衷)

同步是基于對象而不是基于引用的,多個變量可以引用一個對象,變量也可以改變引用的對象,因此,我們要根據實例對象而不是引用來考慮!作為一個原則!永遠不要對一個可能再同步塊中改變其值的實例變量加鎖!!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康乐县| 云林县| 麦盖提县| 黄大仙区| 达孜县| 米易县| 龙南县| 土默特左旗| 永宁县| 富阳市| 江口县| 荃湾区| 即墨市| 安岳县| 灵璧县| 天柱县| 奎屯市| 昔阳县| 威海市| 马关县| 金昌市| 长兴县| 衢州市| 陈巴尔虎旗| 夏邑县| 天长市| 建瓯市| 东城区| 巩留县| 东安县| 吉安县| 赤城县| 广南县| 广丰县| 锡林浩特市| 繁峙县| 甘洛县| 涡阳县| 会泽县| 稷山县| 星子县|