首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的并发请求处理

问java中的并发请求处理
EN

Stack Overflow用户
提问于 2016-02-03 18:48:52
回答 2查看 2.2K关注 0票数 2

在我们应用程序中,如果用户以管理员身份登录,他可以执行任何操作。假设一位管理员修改了一条路线,如果第二位管理员同时检查了相同的路线,并为相同的route.This创建了一个航空运单,这将是一个问题。我无法找到我的应用程序是如何处理这些并发请求的。(我们只是使用jdbc事务)

我从我的团队1得到了不同的答案。web/应用服务器处理这些事务,它将处理并发请求而不会出现任何问题。2.数据库上的行会发生锁,并发请求不会有任何问题。

底线:并发请求应该在代码中处理吗?或者我们应该在部署时在web/应用程序中对并发请求进行任何设置?或者默认情况下,数据库将通过行锁机制来处理并发请求?

如果有人知道在哪里找到解决方案,请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2016-02-06 04:46:15

据我所知,大多数数据库引擎在查询期间使用某种类型的锁定,但不同的引擎会有所不同。我知道InnoDB强制执行事务原子性(see this stack exchange thread),因此在事务中包装的任何内容都不会干扰中间执行。然而,没有人保证哪个请求将首先到达数据库。

至于webServer/appServer,假设你使用的是线程化的web服务器: apache tomcat,jetty等,那么每个请求都是由一个单独的线程来处理的,所以我假设没有固有的线程安全性。在大多数情况下,数据库会毫不费力地处理您的并发,但是我建议在应用程序端包含某种序列化,以防您决定在将来的某个地方更改DB实现,您也将对如何处理请求有更多的控制。

简而言之……两者兼而有之。

票数 0
EN

Stack Overflow用户

发布于 2018-02-17 16:07:04

据我所知,大多数数据库在事务和查询期间都有某种类型的锁定,但您应该检查数据库引用,以确保它使用的锁定方法的类型。至于你的web服务器的问题,我知道tomcat同时处理请求,并为它自己的资源提供了某种线程安全,但它没有为你的application.Thus提供线程安全,你应该自己做。对于你上面提到的问题,我认为当你访问你的路由时,你应该根据数据库来查询它是否存在。此外,当您的其他管理员正在修改路由时,您可以在您正在这样做的区块上使用某种类型的锁定,以便当其他管理员同时想要访问正在修改的路由时,他会等待事务完成。如果您正在使用java作为服务器端,我建议您查看java同步方法,或者如果使用另一种语言,请检查该语言的锁定和线程安全方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35174948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档