有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程java/swing:gui冻结,没有线程挂起

首先,它是一个巨大的应用程序,问题涉及到很多行,所以我不能真正附加任何代码

在主要包括清除和向某些集合重新添加元素的更改之后,应用程序的swing GUI冻结。在执行添加的代码时,冻结不会发生,但会在一段时间之后发生。奇怪的是没有线程被挂起

我的问题是无限循环是否是这个问题的唯一解释。我觉得这种情况不太可能发生,因为添加的代码完成时没有问题。 可能存在一些不同步的集合访问问题,但我认为不会导致这种情况。看起来我们并不是在处理来自同步问题的死锁,因为没有线程被挂起


共 (4) 个答案

  1. # 1 楼答案

    你可能已经知道这一点,但为了这个原因,我想说,如果你在应用程序中的长时间运行过程中没有使用Swing worker,那么使用它将是一个理想的情况

  2. # 2 楼答案

    这可能是因为在swing中执行事件的事件调度程序线程中等待(由于一些繁重的处理)。理想情况下,您应该在单独的线程中执行任何资源密集型任务,这样UI就不会冻结

  3. # 3 楼答案

    最后,这是一个僵局

    我的团队负责人告诉我,在eclipse中,等待监视器的线程(在“已同步”状态下)不会显示为挂起。他找到两条线索,要求暂停。然后我看到他们在等待对方释放被占用的监视器

    死锁不是我输入的代码的错。只是我所做的改变暴露了在其他地方的错误同步

    谢谢大家帮我,我真的很感激。这是我关于stackoverflow的第一个问题,我很惊讶你的反应如此之快