首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于WToolkit.shutdown()没有完成而挂起了关闭我们的Java6应用程序?

由于WToolkit.shutdown()没有完成而挂起了关闭我们的Java6应用程序?
EN

Stack Overflow用户
提问于 2013-03-18 06:24:37
回答 1查看 980关注 0票数 1

我们的应用程序中的自动崩溃报告器有时会报告在关闭应用程序时挂起。我们没有在内部观察到这一点。swing线程挂在ApplicationShutdownHooks.runHooks()中,我认为这可能是因为WToolkit.shutdown()从未返回。不过,我不知道是什么导致了这种情况。有没有人能帮我解释一下是什么导致了挂起?这是一个完整的线程转储。谢谢!JRE是1.6.0_35。

代码语言:javascript
复制
    Thread[AWT-EventQueue-0,6,main] WAITING :
    at java.lang.Object.wait(Native Method)
    at java.lang.Thread.join(Unknown Source)
    at java.lang.Thread.join(Unknown Source)
    at java.lang.ApplicationShutdownHooks.runHooks(Unknown Source)
    at java.lang.ApplicationShutdownHooks$1.run(Unknown Source)
    at java.lang.Shutdown.runHooks(Unknown Source)
    at java.lang.Shutdown.sequence(Unknown Source)
    at java.lang.Shutdown.exit(Unknown Source)
    at java.lang.Runtime.exit(Unknown Source)
    at java.lang.System.exit(Unknown Source)
    at com.biomatters.iseek.application.ISeekFrame$11$2.run(ISeekFrame.java:555)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$400(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    Thread[Hang Watcher,10,main] RUNNABLE :
    at java.lang.Thread.dumpThreads(Native Method)
    at java.lang.Thread.getAllStackTraces(Unknown Source)
    at com.biomatters.utilities.HangWatcher.getAllThreadStackTraces(HangWatcher.java:77)
    at com.biomatters.geneious.common.talkback.client.TalkbackIncidentFactory.fieldsForHang(TalkbackIncidentFactory.java:437)
    at com.biomatters.geneious.common.talkback.client.TalkbackIncidentFactory.forHang(TalkbackIncidentFactory.java:186)
    at com.biomatters.geneious.common.ErrorUtilities.handleHang(ErrorUtilities.java:78)
    at com.biomatters.iseek.application.ISeekMain$16.handleHang(ISeekMain.java:1091)
    at com.biomatters.utilities.HangWatcher$2.run(HangWatcher.java:59)

    Thread[Exe4JStartupThread,5,main] TIMED_WAITING :
    at java.lang.Thread.sleep(Native Method)
    at com.exe4j.Controller$StartupThread.run(Unknown Source)

    Thread[GarbageCollectionNotifier,6,main] WAITING :
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at com.biomatters.geneious.publicapi.utilities.GarbageCollectionNotifier$1.run(GarbageCollectionNotifier.java:49)

    Thread[Biomatters-Timer-Thread,5,main] TIMED_WAITING :
    at java.lang.Thread.sleep(Native Method)
    at com.biomatters.iseek.license.TimerThread.run(TimerThread.java:49)

    Thread[Thread-1,6,system] RUNNABLE :
    at sun.awt.windows.WToolkit.shutdown(Native Method)
    at sun.awt.windows.WToolkit.access$200(Unknown Source)
    at sun.awt.windows.WToolkit$2$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    Thread[Signal Dispatcher,9,system] RUNNABLE :

    Thread[TimerQueue,5,system] TIMED_WAITING :
    at java.lang.Object.wait(Native Method)
    at javax.swing.TimerQueue.postExpiredTimers(Unknown Source)
    at javax.swing.TimerQueue.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    Thread[main,5,main] RUNNABLE :

    Thread[AWT-Windows,6,main] RUNNABLE :
    at sun.awt.windows.WToolkit.eventLoop(Native Method)
    at sun.awt.windows.WToolkit.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    Thread[Timer: UpdatingProperties - customBlast.properties,5,main] TIMED_WAITING :
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)

    Thread[Reference Handler,10,system] WAITING :
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

    Thread[Biomatters-Timer-Thread,5,main] TIMED_WAITING :
    at java.lang.Thread.sleep(Native Method)
    at com.biomatters.iseek.license.TimerThread.run(TimerThread.java:49)

    Thread[AWT-Shutdown,5,main] WAITING :
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at sun.awt.AWTAutoShutdown.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    Thread[Multicast Reader,5,main] TIMED_WAITING :
    at java.lang.Thread.sleep(Native Method)
    at com.biomatters.iseek.license.concurrentlicensechecker.Multicast$1.run(Multicast.java:150)

    Thread[Finalizer,8,system] WAITING :
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

    Thread[Java2D Disposer,10,system] BLOCKED :
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at sun.java2d.Disposer.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    Thread[Do exit,6,main] BLOCKED :
    at java.lang.Shutdown.exit(Unknown Source)
    at java.lang.Runtime.exit(Unknown Source)
    at java.lang.System.exit(Unknown Source)
    at com.biomatters.iseek.application.ISeekFrame$11.run(ISeekFrame.java:560)

    Thread[Memory Monitor,1,main] TIMED_WAITING :
    at java.lang.Thread.sleep(Native Method)
    at com.biomatters.utilities.MemoryMonitor$1.run(MemoryMonitor.java:44)
    at java.lang.Thread.run(Unknown Source)

    Thread[Timer: refresh plugin licenses,5,main] TIMED_WAITING :
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)

    Thread[Attach Listener,5,system] RUNNABLE :
EN

回答 1

Stack Overflow用户

发布于 2013-05-22 00:28:54

我遇到了同样的问题,与JDK一起部署的JConsole程序也有同样的问题。我正在寻找关于这方面的解决方案或错误报告,但这是从1.6.0_25开始的一种回归。这个问题在以前的版本中不会发生(我成功地使用了1.6.0_23 )。

这篇论坛帖子是我找到这个变通方法的地方:

https://forums.oracle.com/forums/thread.jspa?threadID=2260059

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15466989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档