我有一个与服务器通信的客户端应用程序。在这个应用程序中,客户可以向服务器发送请求以保留酒店房间。 问题是,如果我剩下一个房间,可能有两个客户预订。如何在Java中执行服务器端的线程安全方法?
我不知道如何避免它,因为这个原因,我没有代码实现显示。 如果我不得不猜测,我会像一个单身人士一样实施。
if (availableRooms()>0) {
synchronized(syncObject_) {
if (availableRooms()>0) {
makeReservation()
}
}
}
return instance_;
}
这是一个可接受的解决方案吗?它工作吗?
@little bunny foo foo问题是为什么他使用'双重检查锁定'。如果他在您提出建议或通过单独的对象同步“this”是另一个决定。两者都有优势:第一个更好的可读代码后者更强大。数据库事务在这里很好,但在每个DBMS中都不可用。 –