我正在尝试从一个单独的线程监视AWT事件调度线程(EDT)运行状况.如果我开始丢失心跳,我想转储EDT堆栈跟踪.问题是EventQueue没有公开检索当前调度线程的方法,该方法是包私有(可能有充分理由).因此,我可以搜索所有线程并查找名称类似于AWT-EventQueue-X的线程,或者使用invokeLater或invokeAndWait并让我的runnable保存线程,例如:
EventQueue.invokeLater(new Runnable() {
public void run() {
eventDispatchThread = Thread.currentThread();
}
});
Run Code Online (Sandbox Code Playgroud)
然后,每次我去转储线程堆栈时,我必须首先确保我得到的EDT仍然存活,如果没有再次完成整个过程来获取线程.我只是想找一个更干净的方法来做这件事.