使用 Problem Diagnostics Lab Toolkit 增强故障排除技能
2010-05-21 00:00:00 来源:WEB开发网图 7. 监视线程状态
查看正确的代码
和 DeadLock JSP 一样,可以对 Corrected JSP 执行相同的操作;右键单击 Corrected Jsp 按钮并选择下拉菜单中的 Edit Action。结果如清单 2 的 Java 代码所示。
启动 2. Correct Jsp 按钮执行的 Java 代码
synchronized (lock1) { // lock1 is defined in the "Methods and Static Variables" tab
Thread.sleep(5000);
ThreadMonitor.registerThreadStatus("blocked");
synchronized (lock2) {
ThreadMonitor.registerThreadStatus("running");
}
}
synchronized (lock1) { // lock2 is defined in the "Methods and Static Variables" tab
Thread.sleep(5000);
ThreadMonitor.registerThreadStatus("blocked");
synchronized (lock2) {
ThreadMonitor.registerThreadStatus("running");
}
}
该代码执行下面的动作:
获得一个全局锁:lock1。
休眠 5 秒钟。
获得另一个全局锁:lock2。
释放全局锁:lock2。
释放全局锁:lock1。
获得一个全局锁:lock1。
休眠 5 秒钟。
获得一个全局锁:lock2。
释放全局锁:lock2。
释放全局锁:lock1。
与第一个列表的惟一不同之处是重新整理了 lock1 和 lock2 的嵌套顺序。然而,当并发请求被发送给该页面时,所有线程将正常终止。因此,在一个多线程环境中,您必须确保使用正确的嵌套锁顺序,从而避免产生死锁。
结束语
本文解释了 Problem Diagnostics Lab Toolkit 如何帮助诊断一个线程死锁问题。除了死锁以外,PDTK 还帮助诊断其他一些常见的问题,比如内存泄漏、CPU 过度使用、JVM 崩溃等等。通过提供一个使您能够体验常见问题场景的环境,PDTK 可以帮助您通过模拟真实情形来增强问题诊断技能。
Tags:使用 Problem Diagnostics
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接