色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java中Lock和synchronize混合使用鎖住對象時,為何不能保證數據安全?

李中冰2年前16瀏覽0評論

java中內置鎖synchronized和顯式鎖Lock在實現上完全不同,兩者沒有混合使用的辦法,不能保證數據安全。

我們都知道,java的synchronized機制,有一個鎖對象,在這個鎖對象上實現互斥的操作。默認的情況下,會使用當前對象或類實例作為鎖對象。我們也可以使用一個相同的鎖對象,對不同類的方法或代碼塊進行保護。

但是,Lock與synchronized的實現方式完全不同,Lock中并不像synchronized中存在互斥的鎖對象,而是使用了一個狀態計數器,并在嘗試獲取鎖時,使用樂觀鎖機制,調用CAS操作來重復嘗試獲取鎖。

所以,當我們混合使用synchronized和Lock時,實際上就是使用了兩把完全不同的鎖,相互沒有任何關系。