Чтобы не позволить двум людям зарезервировать одну комнату, вы должны убедиться, что только один поток может получить доступ к любому объекту, который предоставляет комнаты.Наиболее читаемый способ сделать это - выполнить синхронизацию на объекте, предоставляющем услугу бронирования номеров, поэтому в этом случае вы, вероятно, могли бы выполнить
synchronized(this){
//...
makeReservation()
//...
}
Однако, пока существует только один экземпляр _syncObject
доступно для всех потоков, и в вашем коде нет другого места, которое может вызвать makeReservation()
, ваш метод также будет работать.
Обратите внимание: если вы используете базу данных, вы можете просто установитьУровень изоляции базы данных до SERIALIZABLE, выполните транзакцию базы данных для makeReservation()
, и база данных позаботится обо всем этом за вас.