我正在为一个简单的股票市场开发一个Java应用程序,人们可以在那里买卖股票。我正在考虑的问题是如何处理买卖并发,并确保2+并发购买订单不会为不同的用户创建重复的股票?
我使用MySQL存储所有信息,并将买卖订单转到特定的表中。
当两个用户同时和立即为同一批股票发出购买订单时,我如何保证他们不会得到比现有股票更多的股票?
客户端连接到服务器,服务器将请求发送到RMI服务器。RMI连接到MySQL以存储数据。
发布于 2013-11-20 21:52:11
只要你围绕每个交易使用一个事务,然后用任何合理的数据库设计,数据库就不会让这种情况发生。如果两个线程都试图提交对已提供股票计数的更改,一个线程将成功,另一个线程将因错误而失败。然后,第二个线程只需要重新尝试这个交易。
发布于 2013-11-20 22:27:03
如果是这样的话,DB就是用来处理这种情况的。这是任何RDBMS系统的酸性特性之一,
当一个事务正在更新该值时,该记录将被锁定,并且仅在提交或回滚时才解锁。第二个事务要么等待,要么返回错误。
如果要处理它,请处理DB中的锁,以便向用户提供自定义消息。
希望这能有所帮助。
https://stackoverflow.com/questions/20107078
复制相似问题