Servlet中使用多线程的wait()方法后,第二个线程无法进入

finemi finemi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public class GetMessageServlet extends HttpServlet {
private static String abc = "123";
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("进入");//第二个请求无法输出
synchronized (abc) {
try {
abc.wait(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


所有请求全部使用同一个同步监视器abc,但是每个线程进入后都会执行abc.wait()并释放锁,为什么我只能第一个请求进入输出“进入”,第二个请求连“进入”都没有输出呢?,当第一个线程5秒超时后,第二个线程才输出“进入”,难道servlet中的多线程有什么不同?

不使用servlet,普通情况下第二个线程是可以进入的,我主要是想做消息推送中,多个接收消息端,可是从第二个接收端开始线程根本就进不去了
...全文
评论 14
收藏 已收藏
分享
返回顶部
finemi
Java EE 67,535 成员 225,843 内容