@JFinal 你好,想跟你请教个问题:
我先描述下场景: 我们在使用jfinal开发一个项目有一个场景是这样的: 有一个预约功能,例如只能预约五个人,那么预约成功一次会在数据库添加一条预约记录, 在添加预约记录之前是通过 查看预约记录的总数来判断是否可以预约, 但是在多线程的情况下,就会出现多个用户同时满足预约条件同时预约,然后我的想法是:打算进行加锁让判断的预约条件的代码在多线程下,只能有一个线程执行,但是看了jfinal源代码 发现Jfinal的Controller是线程安全的,每一次都是new的新实例,代表每次都是不同对象,所以不能加锁, 最后的解决方案是将预约判断条件放在Validate中做了,解决了问题, 我想问下这类问题,是否在jfinal中是否有其他的解决方案(消息队列除外)。 多谢赐教
在Controller中 多线程中 如何保证一段代码 同一个时间点只能被一个线程执行?
有很多方法,下面给出两个方案任选其一:
1:创建一个业务层,将功能实现在业务层,让这个业务层成为单例,并将方法声明为 synchronized ,那么同一时候只会有一个调用者进入方法
2:用 Db.tx(...) 开启事务,事务级别调高点
无论用哪个方案,都建议创建一个业务 class 来做
######thanks
######加锁 synchronized
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。