2015-12-09 100 views
1

我在我的控制器中有一个RequestMapping监听web请求,并且每当有人访问我的网页时,它会延迟响应5000毫秒。RequestMapping不是多线程的吗?

一切工作正常,但是当我在Chrome浏览器中同时再次访问一个新标签时,第二个请求最终会延迟10000毫秒。这让我困惑,Spring MVC是不是多线程的?有人能告诉我发生了什么吗?

@RequestMapping("/view") 
@ResponseBody 

public String View() throws InterruptedException { 
    Thread.sleep(5000); 
    return "done"; 
} 

编辑
我的春天启动的版本是1.2.7.RELEASE。
相关性:spring-boot-starter-web

+0

我不能重现这一点。 –

回答

1

您在会话中打开了新选项卡,可能会导致同步问题。 虽然你会看Spring文档,你会发现: RequestMappingHandlerAdapter.setSynchronizeOnSession(boolean)它会同步会话互斥体上的每个控制器。这对你的应用程序来说可能是矫枉过正的。但它至少使控制器在会话中保持线程安全,而不会阻塞其他用户。

希望,这将有所帮助。

+0

嗨m.aibin,感谢您的回复,我按照这[文章](http://stackoverflow.com/questions/21705024/adding-session-synchronization-to-spring-mvc/21738309#21738309)修改SynchronizeOnSession属性。我发现默认值是false,是否意味着我的进程处于异步?如果我将SynchronizeOnSession设置为true,结果不会改变。我使用了错误的方法? – GETYOU