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

share_code 发布于 2017/04/11 10:38
阅读 1K+
收藏 0

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

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

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

 

加载中
2
JFinal
JFinal

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

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

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

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

返回顶部
顶部