gpt4 book ai didi

java - 如何监控Event Dispatch Thread队列?

转载 作者:行者123 更新时间:2023-12-01 09:47:50 25 4
gpt4 key购买 nike

我有一个繁重的java项目,它无法响应用户。我发现事件调度线程中需要很长时间的事件会导致我的项目运行缓慢。所以,我有两个问题:

  1. 如何监视事件调度线程并查看哪些事件在队列中,以及最终哪些事件在事件调度线程中花费更多时间? (如您所知,invokeLater 函数将事件插入事件调度队列的末尾。我想监视整个事件调度队列)
  2. 如何将事件插入到事件调度线程的第一个? (在这种情况下,GUI 将做出响应)。

最佳答案

速度缓慢通常是由代码无意中尝试从 UI 线程访问文件系统、网络或数据库引起的。通常使用 SwingWorker 很容易修复确定原因后即可。

Replace the Event Dispatch Queue具有监视队列中的事件处理时间的实现。

当事件花费太长时间时,新的队列实现会记录 EDT 的堆栈跟踪。
如果您只习惯在抛出异常时查看堆栈跟踪,请不要 panic 。新的实现不会终止缓慢事件或导致它们抛出异常,它只是向您显示 EDT 在检测到无响应时正在执行的操作。查看打印的堆栈跟踪并找出如何将事件的缓慢部分移动到另一个线程中。

我相信 Netbean 的慢度检测器实现了非常相似的功能。

关于java - 如何监控Event Dispatch Thread队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37841987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com