2015-12-09 67 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