gpt4 book ai didi

java - JFrame 在打开时陷入了一些奇怪的内部死锁

转载 作者:行者123 更新时间:2023-12-05 04:04:20 25 4
gpt4 key购买 nike

我有一个测试,它在失败时打开一个 JFrame 并向我显示一些调试信息。它通常工作得很好,但现在我突然遇到了一个奇怪的僵局。

当我在 IntelliJ 上点击转储线程时,我得到了这个:

```

java.lang.Thread.State: RUNNABLE
at java.lang.Thread.holdsLock(Native Method)
at java.awt.Component.checkTreeLock(Component.java:1202)
at java.awt.Component.getSiblingIndexAbove(Component.java:9858)
at java.awt.Component.getHWPeerAboveMe(Component.java:9890)
at java.awt.Component.updateZOrder(Component.java:10154)
at java.awt.Component.addNotify(Component.java:6953)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.addNotify(Container.java:2762)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.addNotify(JComponent.java:4740)
at javax.swing.JRootPane.addNotify(JRootPane.java:757)
at java.awt.Container.addNotify(Container.java:2773)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.addNotify(Window.java:770)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Frame.addNotify(Frame.java:487)
- locked <0x00000006ce23ddd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.pack(Window.java:807)
at mypackage.LogViewer.viewInFrame(LogViewer.java:380)
at mypackage.LogViewer.viewInFrame(LogViewer.java:380)
at mypackage.TestLogger.viewInFrame(TestLogger.java:280)
at mythingytotest.MyTestClass(MyTestClass.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$166/945591847.execute(Unknown Source)
at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$112/1597249648.execute(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$115/1694556038.accept(Unknown Source)

```

没有其他线程包含我的任何代码。即使有,我也看不出它怎么会在那里导致死锁。

logviewer 组件仅使用基元和基元集合以及普通的 swing 组件:JComboBox、JTextField、JPanel、JCheckBox

最佳答案

Ty 毫无意义的否决票。

无论如何,以防万一一些可怜的迷失的灵魂在未来偶然发现类似的东西:

Threre 实际上并没有死锁。这是由以下原因引起的:

1) logviewer 组件内部有大量事件并且需要相当长的时间才能打开它

2) 我遇到的一个 ubuntu 故障导致 jframe 完全不可见

关于java - JFrame 在打开时陷入了一些奇怪的内部死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703105/

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