Предполагая, что вы используете многопоточность в приложении. Чтобы использовать один объект с несколькими потоками, вы должны использовать синхронизацию. Пока один поток инициализирует структуру данных, другой ожидает завершения инициализации. Эта логика обычно реализуется с использованием методов ожидания / уведомления, которые можно вызывать для любого объекта.
Рабочая резьба (и):
while (initialized) {
synchronized (object) {
object.wait();
}
}
Поток инициализации:
synchronized (object) {
// initialization
initialized = true;
object.notifyAll();
}
object
- это структура данных, которая должна быть инициализирована. Флаг initialized
, используемый для указания того, что инициализация завершена. Этот флаг лучше использовать, потому что иногда wait
может быть завершен без соответствующего notify
.