我遇到一个问题,用户A提交了一个请求,我们调用了Web服务并进行了一些验证,从数据库中为该用户选择了记录并发送回数据。
现在,同时另一个用户B提交了一个请求,这次有2条记录(用户A,B记录是从db中选取的)。
我的要求是,当用户B提交记录时,我只想选择一个记录。根据要求,我无法针对特定记录对数据库进行检查以仅选择该记录。仅当多个人同时提交时才会发生这种情况。
我们在发送响应后更新了一个标记,以便在其他请求进入时不会再次拾取处理过的记录。
问题是,如果有人发送请求,则在更新此标志之前,将选择所有没有标志的记录。
有人可以建议我如何在JAVA中设计它吗?
答案 0 :(得分:0)
您应该对线程同步进行一些研究。
实际上,您希望在执行下一个交互之前(或至少部分完成)一个交互。当然,如果是Web服务器的上下文,则您不希望一个交互阻止另一个交互。因此,需要进行权衡。
一种方法是将数据库中记录的读取和标记封装到一个同步块中,以便一次只有一个线程可以执行那部分交互。