Я не уверен в правильном использовании летучих, потому что иногда поле изменчиво, иногда нет. Я знаю, для чего требуется волатильный, но я просто рассмотрю, как Varhandle разрешает доступ к поле. Волатильный имеет методы летучего доступа, но я знаю, что для выпуска/приобретения летучего поле должно быть в порядке, но SetVolatile или getVolatile не уверен.
Код: Выделить всё
class Test {
private int tail;
private static final VarHandle tailVh;
static {
try {
tailVh = MethodHandles.lookup().findVarHandle(RingBuffer.class, "tail", int.class);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
]
Что для него подходит?>
Подробнее здесь:
https://stackoverflow.com/questions/795 ... ile-or-not