java - Eclipse 调试视图中的红色线程是什么意思?
问题描述
在 Eclipse 中调试我的 Java 应用程序期间,调试视图以红色文本颜色和锁定符号显示一些线程:
谁能解释这意味着什么?
我目前正在我的代码中寻找(潜在的)死锁。这就是为什么红线困扰我的原因。但是当我挂起 VM 时,这些线程显然不涉及死锁情况:
我研究了Debug View 的 Eclipse 帮助页面,但没有找到任何解释。
编辑:正如@howlger 正确指出的那样,Eclipse 提示和技巧(JDT)页面上有一条注释,指出“......死锁中涉及的线程以红色呈现......”。但这是否也意味着死锁检测是将线程渲染为红色的唯一原因?如果是这样,我的情况可能只是日食内部启发式的误报。一旦我挂起我的虚拟机,eclipse 就会详细调查监视器的所有权,并发现没有实际的死锁情况。这也与挂起的线程外观一致(我在上面的第二个屏幕截图):挂起时,线程突然不再是红色了。
解决方案
红色线程涉及死锁,但您必须启用Show Monitors才能查看哪个线程拥有哪个对象。
请参阅Eclipse 提示和技巧 (JDT)帮助页面:
线程和监视器
Java 调试器可以选择在“ 调试”视图中显示监视器信息。使用Debug 视图下拉菜单中的Show Monitors操作来显示哪些线程持有锁以及哪些线程正在等待获取锁。涉及死锁的线程以红色呈现。
推荐阅读
- python - csv 模块:有序字典操作?
- java - 在运行行为测试之前插入事件以获得所需的状态
- azure - 更新快照位置 Velero Azure
- php - Laravel 6.2/docker/docker-compose phpunit 在本地环境中运行而不是测试
- mysql - 给定 MariaDb 查询中的年份、月份和星期,如何获取一周中第一天的月份日期?
- javascript - flex:1 隐藏
- javascript - 上传到 Github 页面时,我的网站 CSS 的某些部分没有实现?
- apache-nifi - NiFi 通过 JsonPathReader 或 JsonTreeReader 将 JSON 转换为 CSV
- sql-server - 将本周与前一周进行比较
- android - 同步融合许可证颤振 SfDateRangePicker