在下面的假設情景中,出於對更好理解語言的渴望,是否需要對int []進行參考?在這裏是不穩定的嗎?
public final class SO {
private int[] ar = new int[10]; // is volatile needed here?
private int idx = 0;
public synchronized int get(int i) {
return ar[i];
}
public synchronized void append(final int val) {
if (idx == ar.length) {
// array is too small, let's grow it
final int[] prev = ar;
ar = new int[ar.length+ar.length*20/100]
System.arrayCopy(prev, 0, ar, 0, prev.length);
}
ar[idx++] = val;
}
}
到檢索的INT的唯一方法是槽一個同步方法和修改INT [](包括創建新INT [])的唯一途徑也做槽同步方法。
我不需要添加任何額外的同步權嗎?
您已將此標記爲原始類型,但實際上int []是Object,因爲它是一個java數組。 – wmorrison365
使'ar'易失性只對'ar'(而不是其中的元素)賦值一個易失性寫 –
'ar.length + ar.length * 20/100' ='ar.length * 6/5' –