action代码如下:
public void sleep() throws InterruptedException { Thread.sleep(5000); success("Awake @" + System.currentTimeMillis()); }
在浏览器中发送多个请求:/sleep
各个请求均顺序完成,输出的时间依次+5s。
Sleep语句改为
Db.find("SELECT SLEEP(5)");
通过数据库实现也是如此。
检查Undertow的ioThreads和workerThreads均不为1,通过IDEA运行,debug模式为false,拦截器都停用了。
请问是什么原因呢?
项目:JFinal
如果你用的是 eclipse ,在 sleep 代码处设置一个断点,在个请求到达你上面那个 sleep 代码以后,在 debug 小窗中会出现多个被挂起的线程,点击不同的挂起线程,可以在 sleep 以后继续调试
这个问题必然是与 jfinal 毫无关系的, jfinal 自然是无法干预让 Thread.sleep(...) 在多线程下串行的, 就是想干预也办不到