2013-11-20 23 views
0

我正在开发一个简单的股票市场的Java应用程序,人们可以买卖股票的股票。我在考虑的问题是如何处理购买/出售并发性,并确保2+个并行购买订单不会为不同用户创建重复份额?如何处理股市应用程序中数据库的并发问题?

我正在使用MySQL来存储所有信息,买入和卖出的订单转到特定的表格。

当两个用户为同一只股票发出同时发出的即时买单时,我如何确保他们没有获得更多的股票?

客户端连接到服务器,服务器将请求发送到RMI服务器。 RMI连接到MySQL以存储数据。

+0

这完全取决于设计。这更多的是一个设计决定。分享表格设计,以便解决方案可以被认为 – Habrashat

+0

@HarshaBhat编辑帖子。订单的表格设计很简单。它包含他想要购买的东西以及多少。客户端向服务器发送购买订单,服务器调用RMI创建购买订单。在每次买入订单后,RMI执行匹配现有买入和卖出订单的matchOrders()。 – andrepcg

回答

1

只要你在每笔交易中使用一笔交易,那么通过任何可信的数据库设计,数据库都不会让这种情况发生。如果两个线程都尝试提交所提供共享的计数更改,则一个将成功,另一个将失败并显示错误。第二个线程只需要重试交易。

1

如果是这样的话,DB就是为了处理这种情况而设计的。 这是任何RDBMS系统的ACID属性之一,

当一个事务正在更新该值并且仅在提交或回滚时才锁定该记录。 第二个事务要么等待要么返回一个错误。

如果您想处理它,请处理数据库中的锁以向用户发送自定义消息。

希望这会有所帮助。

相关问题