为什么servlet容器会同步对特定资源/ servlet的多个请求的访问?

时间:2016-05-21 08:42:26

标签: java multithreading servlets

  

默认情况下,servlet container仅加载single instance个   servlet的。 servlet提供的Requestsrun中为separate threads,   但是share the same instance。这使应用程序成为可能   响应性和可扩展性,因为它需要更少的资源和使用   他们有效率。

几乎每个人都知道这是default threading model

此问题/讨论是对this特定stackoverflow线程的后续跟进。

但在我的情况下输出恰好完全不同,

May 21, 2016 1:57:59 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test before                        // 1st  thread

May 21, 2016 1:58:26 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test before                        // 2nd  thread

May 21, 2016 1:58:59 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test after                         // 1st  thread

May 21, 2016 1:59:26 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test after                         // 2nd  thread

即使我在同一个浏览器的2个浏览器窗口中点击了映射到此特殊servlet的url,但是这两个差异是打不过~1秒,但我看到下面的输出

May 21, 2016 1:58:26 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test before                        // 2nd  thread

在超过之前提到的秒数~1秒后,

即对此,

May 21, 2016 1:57:59 PM com.stackoverflow.question8011138.MyServlet doGet
INFO: [doGet] Test before                        // 1st  thread

为什么?

显然,从上面的输出中,第一个请求在第一个请求完全提供后不会提供,但是在b / w中,与该问题的OP建议相反。

究竟发生了什么?

为什么2个不同的输出到同一场景?

result/ output清楚地表明服务器是not synchronizing 2 requests.

0 个答案:

没有答案