У меня есть класс, который сильно упрощен для соответствующих частей и выглядит так (фиктивные имена):
@RequiredArgsConstructor
public class SomeClass {
private final SomeProvider someProvider;
private SomeDataStore store = null;
private SomeDataStore getStoreAttributes() {
if (store == null) {
store = new SomeDataStore(someProvider, <other params>)
}
return store;
}
}
Товарищ по команде отметил, что проверка для store == null
не является потокобезопасной, поскольку значение store
может изменяться между потоками. Однако мы не уверены, что это будет иметь значение, так как ничто не устанавливает store
в ноль, и я не вижу проблемы с несколькими потоками, пытающимися установить один и тот же store
для нового SomeDataStore (...) потому что хранилище данных доступно только для чтения из кода.
Есть ли какие-либо проблемы, которые я пропускаю с безопасностью потока этого?
Спасибо!