默认情况下,
servlet container
仅加载single instance
个 servlet的。 servlet提供的Requests
在run
中为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.