Controller 如何使用java队列?

Controller中我如果想要防止java并发,  如何使用java队列? 其中Controller可能会有很多方法。我想使用java队列,每次进入Controller时。我都先添加到队列,然后来处理

评论区

杜福忠

2018-07-28 14:22

写个Interceptor http://www.jfinal.com/doc/4-2
在里面写个 列队 比如:
private static Queue cs= new ConcurrentLinkedQueue();
intercept方法里面做添加动作
public void intercept(Invocation inv) {
if(cs.size() < 20)
cs.offer(inv);
else
inv.getController().renderText("座位满了, 下次再来吧~");
}
再启动其他线程去处理就可以了
static {
for (int i = 0; i < 20; i++) {
new Thread(){
public void run() {
try {
Invocation inv = cs.poll();
if(inv==null)
Thread.sleep(200);
else
inv.invoke();
} catch (Exception e) {//异常}
}
}.start();
}
}


但这样做体验肯定不好卡的很, 应该把列队放业务层, 然后Controller快速反应, 告诉前端稍候再来拿结果

热门反馈

扫码入社