5
回答
Servlet doPost方法 阻塞疑问
华为云4核8G,高性能云服务器,免费试用   

很简单,看代码:

private Object lock = new Object();
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("start");
		synchronized(lock) {
			try {
				lock.wait(15000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			lock.notifyAll();
		}
	}
servlet地址配置为 /index

第一个request进来的时候打印 start, 并停在

lock.wait(15000)
这行。

第二个request进来的时候我觉得应该阻塞在

synchronized(lock)
但是测试发现竟然连doPost方法都没进来,被阻塞在了外面,当第一个request
lock.notifyAll();
后,第二个request才进来,打印 start. 这不科学啊~~~!干了这么年web开发今天才发现这个问题。。。。

难道这就是tomcat处理方式??

举报
Grrrr
发帖于5年前 5回/1K+阅
顶部