WEB开发网
开发学院软件开发Java 使用 Problem Diagnostics Lab Toolkit 增强故障排... 阅读

使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

 2010-05-21 00:00:00 来源:WEB开发网   
核心提示: 图 7. 监视线程状态查看正确的代码和 DeadLock JSP 一样,可以对 Corrected JSP 执行相同的操作;右键单击 Corrected Jsp 按钮并选择下拉菜单中的 Edit Action,使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

图 7. 监视线程状态
使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

查看正确的代码

和 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 可以帮助您通过模拟真实情形来增强问题诊断技能。

上一页  2 3 4 5 6 7 

Tags:使用 Problem Diagnostics

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接