Есть ли способ объявить элементы массива volatile
в Java? Т.е.
volatile int[] a = new int[10];
объявляет ссылку на массив volatile
, но элементы массива (например. a[1]
) все еще не энергозависимы. Таким образом, я ищу что-то как
volatile int[] a = new volatile int[10];
но это не прокладывает себе путь. Действительно ли это возможно вообще?
Используйте AtomicIntegerArray
или AtomicLongArray
или AtomicReferenceArray
Класс AtomicIntegerArray
реализует массив int, к отдельным полям которого можно получить доступ. с помощью методов класса get ()
и set ()
. Вызов arr.set (x, y)
из одного потока затем гарантирует, что другой поток, вызывающий arr.get (x)
, прочитает значение y (до тех пор, пока другое значение не будет считано в позицию Икс).
См .:
Нет, можно ' t сделать элементы массива непостоянными. См. Также http://jeremymanson.blogspot.com/2009/06/volatile-arrays-in-java.html .