【问题标题】:Is RequestMapping not multithreaded?RequestMapping 不是多线程的吗?
【发布时间】:2015-12-11 16:13:59
【问题描述】:

我的控制器中有一个 RequestMapping 监听网络请求,每当有人访问我的网页时,它都会延迟响应 5000 毫秒。

一切正常,但是当我同时在 Chrome 中使用新标签再次访问时,第二个请求最终被延迟了 10000 毫秒。这让我很困惑,Spring MVC 不是多线程的吗?谁能告诉我这里发生了什么?

@RequestMapping("/view")
@ResponseBody

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

编辑
我的 Spring Boot 版本是 1.2.7.RELEASE。
依赖项:spring-boot-starter-web

【问题讨论】:

  • 我无法重现这个。

标签: java spring spring-mvc


【解决方案1】:

您在会话中打开了新选项卡,这可能会导致同步问题。 当您查看 Spring Docs 时,您会发现: RequestMappingHandlerAdapter.setSynchronizeOnSession(boolean) 同步会话互斥锁上的每个控制器。这对您的应用程序来说可能是多余的。但它至少使控制器在会话中线程安全,而不会阻塞其他用户。

希望,它会有所帮助。

【讨论】:

  • 您好 m.aibin,感谢您的回复,我按照article 修改 SynchronizeOnSession 属性。我发现默认值为 false,这是否意味着我的进程处于异步状态?如果我将 SynchronizeOnSession 设置为 true ,结果没有改变。我用错了方法?
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 2010-12-12
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多