【发布时间】:2011-06-25 20:33:36
【问题描述】:
我正在尝试从一个单独的线程监控 AWT 事件调度线程 (EDT) 的运行状况。如果我开始丢失心跳,我想转储 EDT 堆栈跟踪。问题是 EventQueue 没有公开检索当前调度线程的方法,该方法是包私有的(可能有充分的理由)。因此,我可以搜索所有线程并查找名称如 AWT-EventQueue-X 的线程,或者使用 invokeLater 或 invokeAndWait 并让我的可运行保存线程,例如:
EventQueue.invokeLater(new Runnable() {
public void run() {
eventDispatchThread = Thread.currentThread();
}
});
然后每次我去转储线程堆栈时,我必须首先确保我拥有的 EDT 仍然存在,如果没有再次通过整个过程来获取线程。我只是在寻找一种更清洁的方法来做到这一点。
【问题讨论】: