2017-10-14 126 views
0

爲了防止他們接受相同類型使用identityHashCode命令同步在Java 8中仍然有效嗎?

method(Clazz class1, Clazz class2) 

這可以通過兩個線程在不同的順序

method(a,b) 
method(b,a) 

此外,要防止造成問題相同參數來調用兩個參數的方法僵局通過在參數順序上訂購鎖定

synchronized (class1) { 
    synchronized (class2) { 
     } 
    } 

而是使用ob的identityHashCode結果排序鎖在Java 8中仍然需要鎖定一個有效的方法?

這在併發編程實踐的書,僅僅是Java的6

+1

由於Java必須與現有代碼向後兼容,爲什麼此方法突然在*有效?你問是否有更新的選擇? –

+1

identityHashCode從來沒有保證是唯一的,所以我不知道如何有效。 – user2357112

+0

一次總是建議重複檢查鎖定 – UserF40

回答

0

一句話描述 - 是的。 Java 8中仍然存在相同的原則。