有人能告诉我如何在Java多线程应用程序中找到“多少线程处于死锁状态”吗?找到死锁线程列表的方法是什么?
我听说过线程转储和堆栈跟踪,但我不知道如何实现它。
请让我知道你的意见和建议。
发布于 2009-05-19 17:16:40
获得线程转储的方法:
kill -3jstack和您的进程id (使用jps)jconsole或visualvmJ2SE 5.0中的主要新线程特性(2004年发布,服务寿命结束):
java.util.concurrent发布于 2009-05-19 17:04:38
在进程id上使用杀害-3
这将将线程转储和线程争用的概述打印到控制台。
发布于 2009-05-19 19:53:34
在您的程序中,ThreadMXBean类有一个方法ThreadMXBean以及用于查询当前线程堆栈跟踪的方法。在Windows中,执行Ctrl+Break将给出堆栈跟踪列表,并指示死锁线程。
除了对Java内存模型进行一些调整以清理一些并发“漏洞”之外,Java 5中最重要的特性是它向程序员公开了比较集(CAS)操作。然后,在此基础上,在平台中提供了大量并发实用程序。确实有很多东西,但它们包括:
您可能对我在许多Java 5并发特性上编写的教程感兴趣。
https://stackoverflow.com/questions/883936
复制相似问题