В следующем гипотетическом сценарии и из-за желания лучше понять язык, переменная требуется для 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 [] ) такжесделано через синхронизированный метод.
Мне не нужно добавлять какие-либо дополнительные права синхронизации?