【发布时间】:2012-12-04 10:27:52
【问题描述】:
首先它是一个巨大的应用程序,问题涉及很多行,所以我无法真正附加任何代码。
在主要包括清除和重新添加元素到某个集合的更改后,应用程序的摆动 GUI 冻结。在执行添加的代码时不会发生冻结,但会在一段时间后发生。奇怪的是没有线程被挂起。
我的问题是无限循环是否是这个问题的唯一解释。我觉得不太可能是这种情况,因为添加的代码完成后没有问题。 可能存在一些不同步的集合访问问题,但我不认为它会导致这种情况。由于没有挂起线程,因此我们似乎也没有处理来自同步问题的死锁。
【问题讨论】:
-
您是否尝试过使用调试器?如果 GUI 冻结,您应该在 Event Dispatching Thread 中看到一些东西(在 Eclipse 中,您可以随时暂停任何线程并查看它当前的位置)。另一种选择是使用 JConsole 并查看线程及其当前堆栈调用。
-
GUI freeze ... 进行线程转储,看看是什么阻塞了 AWT 线程
-
纪尧姆和罗宾这些都是很好的建议。谢谢。
标签: java multithreading swing user-interface freeze