Скажем, у меня есть Java ArrayList
, которая, очевидно, не может быть переменной volatile
(volatile
в том смысле, что все ее внутренние переменные являются volatile
), и я хочу увидеть ее последнее состояние во втором потоке, учитывая, что я могу быть уверен, что второй поток выполняется после завершения первого потока (первого потока, который мог изменить экземпляр ArrayList
).
Используя барьер памяти, это должно быть легко. Но как я могу создать такой барьер памяти, который влияет на все внутренние переменные/состояния-члены экземпляра ArrayList
? Я знаю, что синхронизация возможна, но я не знаю, на каком объекте я должен синхронизироваться, чтобы добиться желаемого эффекта.
Есть ли официальная ссылка на эту проблему, определяющая передовой опыт?
Мне кажется, что наиболее простым способом достижения барьера памяти является вызов чего-то вроде fullFence()
. Но похоже, что это не рекомендуемый способ ;-)