关于Jfinal Controller 多线程情况下,读取数据库共享变量问题!

发布于 2021-11-30 20:38:16 字数 627 浏览 400 评论 2

@JFinal 你好,想跟你请教个问题:

我先描述下场景:   我们在使用jfinal开发一个项目有一个场景是这样的: 有一个预约功能,例如只能预约五个人,那么预约成功一次会在数据库添加一条预约记录, 在添加预约记录之前是通过 查看预约记录的总数来判断是否可以预约, 但是在多线程的情况下,就会出现多个用户同时满足预约条件同时预约,然后我的想法是:打算进行加锁让判断的预约条件的代码在多线程下,只能有一个线程执行,但是看了jfinal源代码 发现Jfinal的Controller是线程安全的,每一次都是new的新实例,代表每次都是不同对象,所以不能加锁,  最后的解决方案是将预约判断条件放在Validate中做了,解决了问题, 我想问下这类问题,是否在jfinal中是否有其他的解决方案(消息队列除外)。 多谢赐教

在Controller中 多线程中 如何保证一段代码 同一个时间点只能被一个线程执行?

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

后知后觉 2021-12-05 07:06:41

加锁 synchronized

归属感 2021-12-02 18:26:40

有很多方法,下面给出两个方案任选其一:

1:创建一个业务层,将功能实现在业务层,让这个业务层成为单例,并将方法声明为 synchronized ,那么同一时候只会有一个调用者进入方法

2:用 Db.tx(...) 开启事务,事务级别调高点

无论用哪个方案,都建议创建一个业务 class 来做

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文