Представьте, что вы пишете in-memory кеш конфигураций. У вас есть ConfigService, который должен:
🔘Загружать конфигурации из базы (эмулируется loadConfigFromDB())
🔘Раздавать *текущую* версию конфигурации многопоточным клиентам
🔘Давать 100% thread‑safety и 0 блокировок
🔘Позволять hot‑reload без блокировки клиентов
🔘Гарантировать, что ни один поток никогда не увидит "смешанную" конфигурацию
🔧 Что нужно сделать:
Реализуйте ConfigService, который использует AtomicReference<Config> и Immutable-объекты, чтобы:
1. Конфигурация всегда была консистентной
2. Потоки не блокировали друг друга
3. Обновления конфигурации были моментальными и безопасными
📦 Пример API:
class ConfigService
public Config getCurrentConfig(); // read-only, вызывается часто
public void reload(); // обновить конфиг, редко
🧠 Хитрость: нельзя использовать synchronized, volatile массивы, CopyOnWrite, ReentrantLock, и т.п. — только атомарность и неизменяемость.
🚀 Challenge accepted?
Источник: https://vk.ru/wall-111905078_72157 #информационныетехнологии #ITкурсы #ITобразование #курсыИТ #курсыIT #ИТобразование #программирование #IT #ИТкурсы #ИТ
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев