volatile で宣言されている配列フィールドを報告します。 このような宣言は誤解を招く可能性があります。配列自体へのアクセスは volatile フィールドのルールに従っていますが、配列の内容へのアクセスでは同じルールに従っていないためです。

例:


  class Data {
    private volatile int[] idx = new int[0];
  }

配列の内容に対してこのような volatile アクセスが必要な場合は、代わりに java.util.concurrent.atomic クラスの使用を検討してください。


  class Data {
    private final AtomicIntegerArray idx = new AtomicIntegerArray(new int[0]);
  }