如何解决Java Flight Recording 不报告 Java Mission Control 中的 DeadLock
我试图模拟我将使用 Java Flight Recorder 记录并使用 Java Mission Control 检查的死锁情况。
由于某种原因,线程部分下的阻塞线程没有被标记为阻塞,Java Mission Control 部分中的自动分析也没有报告死锁情况
同时,收集到的线程转储清楚地表明线程被阻塞并发现了 1 个死锁
public class ExternalDeadLock {
private static Lock lock1 = new reentrantlock();
private static Lock lock2 = new reentrantlock();
static Runnable task1 = () -> {
while(true) {
try {
lock1.lock();
sleep();
lock2.lock();
System.out.println("task 1 still running");
} finally {
lock1.unlock();
lock2.unlock();
}
}
};
static Runnable task2 = () -> {
while(true) {
try {
lock2.lock();
sleep();
lock1.lock();
System.out.println("task 2 still running");
} finally {
lock1.unlock();
lock2.unlock();
}
}
};
private static void sleep() {
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
e.printstacktrace();
}
}
public static void main(String[] args) throws InterruptedException {
Scanner scanner = new Scanner(system.in);
System.out.println("Press enter to initiate dead lock");
scanner.nextLine();
ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(task1);
executor.submit(task2);
executor.awaitTermination(10000,TimeUnit.DAYS);
}
}
我使用所有默认设置的标准“分析”指标预设。
我试图了解我哪里做错了,导致 Java Mission Control 中的死锁情况如此不明显
Blocked thread looks as active Thread dump detects deadlock
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。