Java 如何在股市app中处理数据库并发?

Java 如何在股市app中处理数据库并发?,java,mysql,concurrency,Java,Mysql,Concurrency,我正在为一个简单的股票市场开发一个Java应用程序,人们可以在这里买卖股票。我想的问题是如何处理买入/卖出并发,并确保2+并发买入订单不会为不同的用户创建重复的共享 我使用MySQL存储所有信息,并将买卖订单发送到特定的表中 当两个用户同时发布同一股票的即时购买订单时,我如何确保他们不会获得比可用股票更多的股票 客户端连接到服务器,服务器将请求发送到RMI服务器。RMI连接到MySQL以存储数据 只要您在每笔交易中使用一个事务,然后使用任何合理的数据库设计,数据库就不会让这种情况发生。如果两个线

我正在为一个简单的股票市场开发一个Java应用程序,人们可以在这里买卖股票。我想的问题是如何处理买入/卖出并发,并确保2+并发买入订单不会为不同的用户创建重复的共享

我使用MySQL存储所有信息,并将买卖订单发送到特定的表中

当两个用户同时发布同一股票的即时购买订单时,我如何确保他们不会获得比可用股票更多的股票


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

只要您在每笔交易中使用一个事务,然后使用任何合理的数据库设计,数据库就不会让这种情况发生。如果两个线程都试图提交对提供的共享数量的更改,那么一个将成功,另一个将失败并出现错误。然后,第二个线程只需重试交易。

如果是这种情况,DB设计用于处理这种情况。 这是任何RDBMS系统的酸性特征之一

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

如果要处理它,请处理数据库中的锁,以便向用户提供自定义消息


希望这有帮助。

这完全取决于设计。这更像是一个设计决策。分享表格设计,以便思考解决方案of@HarshaBhat编辑了这篇文章。订单的表格设计很简单。它包含了他想买的东西和多少钱。客户机向服务器发送购买订单,服务器调用RMI创建购买订单。在每个购买订单之后,RMI执行matchOrders(),该订单与现有的购买和销售订单相匹配。