gpt4 book ai didi

java - 在 servlet 中创建死锁的方法

转载 作者:行者123 更新时间:2023-12-01 15:16:08 26 4
gpt4 key购买 nike

您能否告诉我们如何在 servlet 中创建死锁,我认为这是一种简单的方法,在 doGet() 中调用 doPost() 方法,在 doPost() 中调用 doGet() 方法,它将创建死锁情况对于 servlet。请问还有其他方法吗?

最佳答案

对于每个请求,Web 容器都会创建一个新线程。在我的 servlet 中,我保留了 2 个方法。一种是 doGet,另一种是 doPost。这是我的 servlet 代码

public class DeadLockServlet extends HttpServlet {
public static Object s = new Object();
public static Object s1 = new Object();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
synchronized (s) {
System.out.println("Got lock of s in get");
try {
Thread.sleep(9977);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("waiting for lock of s1 in get");
synchronized (s1) {
System.out.println("Got lock of s1 in get");
}
}

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
synchronized (s1) {
System.out.println("Got lock of s1 in post");
try {
Thread.sleep(9977);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("waiting for lock of s in post");
synchronized (s) {
System.out.println("Got lock of s in post");
}
}}

}

这里是我的 abc.jsp 代码

  <form action="DeadLockServlet" method="post">
<input type="submit" value='ok'/>
</form>

我正在从一个浏览器向我的 servlet 发送请求 http://localhost:8090/DeadLockTest/abc.jsp (点击确定按钮时的post方法)。

来自另一个浏览器的另一个请求,例如 http://localhost:8090/DeadLockTest/DeadLockServlet (对于获取方法)。现在你会得到死锁的情况

关于java - 在 servlet 中创建死锁的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11583644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com