У меня есть класс, содержащий изменчивую ссылку на массив:
private volatile Object[] objects = new Object[100];
Теперь я могу гарантировать, что в массив может записываться только один поток (назовем его writer
). Например,
objects[10] = new Object();
Все остальные потоки будут считывать только значения, записанные потоком writer
.
Вопрос: Нужно ли мне синхронизировать такие чтения и записи, чтобы обеспечить согласованность памяти?
Я полагаю, да, я должен. Потому что это не было бы полезно с точки зрения производительности, если JVM обеспечивает некоторую гарантию целостности памяти при записи в массив. Но я не уверен в этом. Не нашел ничего полезного в документации.