2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

Java培訓:同步方法是否也存在鎖?

更新時間:2023-12-06 來源:黑馬程序員 瀏覽量:

IT培訓班

  大家可能會有這樣的疑問:同步代碼塊的鎖是自己定義的任意類型的對象,那么同步方法是否也存在鎖?如果有,它的鎖是什么呢?答案是肯定的,同步方法也有鎖,它的鎖就是當前調用該方法的對象,也就是this指向的對象。這樣做的好處是,同步方法被所有線程所共享,方法所在的對象相當于所有線程來說是唯一的,從而保證了鎖的唯一性。當一個線程執行該方法時,其他的線程就不能進入該方法中,直到這個線程執行完該方法為止,從而達到了線程同步的效果。

1701825589105_同步方法是否也存在鎖.jpg

  有時候需要同步的方法是靜態方法,靜態方法不需要創建對象就可以直接用“類名.方法名()”的方式調用。這時候讀者就會有一個疑問,如果不創建對象,靜態同步方法的鎖就不會是this,那么靜態同步方法的鎖是什么?Java中靜態方法的鎖是該方法所在類的class對象,該對象是裝載該類時自動創建,該對象可以直接用類名.class的方式獲取。

  采用同步代碼塊和同步方法解決多線程問題有好處也有弊端。同步解決了多個線程同時訪問共享數據時的線程安全問題,只要加上同一個鎖,在同一時間內就只能有一個線程被執行。但是線程在執行同步代碼時每次都會判斷鎖的狀態,非常消耗資源,效率較低。

分享到:
在線咨詢 我要報名
和我們在線交談!