W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
注釋方法或單個局部變量。
注釋單個局部變量意味著從引用計數(shù)中排除此變量的實例引用。注釋方法意味著撤消該方法對引用對象的所有局部變量(顯式或隱式)的所有權(quán),并從引用對象的引用計數(shù)中排除這些變量的引用。
UnownedLocal 的目的是減少 RC 開銷,而不是消除循環(huán)引用。
對于在多線程模式下不安全的 HashMap.containsValue 方法,不允許其他線程同步修改 HashMap。因此,對 HashMap 中內(nèi)部表和節(jié)點(diǎn)的讀取不包括在引用計數(shù)中,因此不會釋放所引用的對象。在這種情況下,可以使用 UnownedLocal 在方法中注釋對象。
請參考以下示例代碼:
@UnownedLocal
public boolean containsValue(Object value) {
Node<K,V>[] tab;
V v;
if ((tab = table) != null && size > 0) {
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next) {
if ((v = e.value) == value || (value != null && value.equals(v)))
return true;
}
}
}
return false;
}
public boolean containsValue(Object value) {
Node<K,V>[] @Unowned tab;
V @Unowned v;
if ((tab = table) != null && size > 0) {
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next) {
if ((v = e.value) == value || (value != null && value.equals(v)))
return true;
}
}
}
return false;
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: