您能否建议我们如何在servlet中创建死锁,我想这是在doGet()和doPost()方法中调用doPost()方法和doGet()方法的一种简单方法,它将为servlet创建死锁情况。请告知还有其他方法。
最佳答案
在下面部署servlet并调用几次。
public class DeadLockServlet extends HttpServlet {
private static long sleepMillis = 10000;
private final Object lock1 = new Object();
private final Object lock2 = new Object();
private boolean switch = true;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
if(switch){
switch=!switch;
lock12();
}
else{
switch=!switch;
lock21();
}
PrintWriter out = res.getWriter();
out.println("Done!");
out.close();
}
private void lock12() {
synchronized (lock1) {
sleep();
synchronized (lock2) {
sleep();
}
}
}
private void lock21() {
synchronized (lock2) {
sleep();
synchronized (lock1) {
sleep();
}
}
}
private void sleep() {
try {
Thread.sleep(sleepMillis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}