【发布时间】:2011-06-09 09:20:54
【问题描述】:
为什么一个简单的 Java GUI 应用程序会创建这么多线程?
【问题讨论】:
-
这不是简单的 gui,伙计。
-
@Suraj,这是一个任务管理器,他用它来查看为他的 java 应用程序生成了多少线程。
-
@Lirik 我的评论应该是双关语:)
标签: java multithreading jvm
为什么一个简单的 Java GUI 应用程序会创建这么多线程?
【问题讨论】:
标签: java multithreading jvm
Java 在很多事情上都使用线程:
【讨论】:
一个简单的 Java Swing GUI 有以下线程:
Thread [AWT-Shutdown] (Suspended)
Object.wait(long) line: not available [native method] [local variables unavailable]
Object.wait() line: 485
AWTAutoShutdown.run() line: 265
Thread.run() line: 619
Daemon Thread [AWT-Windows] (Suspended)
WToolkit.eventLoop() line: not available [native method] [local variables unavailable]
WToolkit.run() line: 295
Thread.run() line: 619
Thread [AWT-EventQueue-0] (Suspended)
Object.wait(long) line: not available [native method] [local variables unavailable]
EventQueue(Object).wait() line: 485
EventQueue.getNextEvent() line: 479
EventDispatchThread.pumpOneEventForFilters(int) line: 236
EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 184
EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 174
EventDispatchThread.pumpEvents(int, Conditional) line: 169
EventDispatchThread.pumpEvents(Conditional) line: 161
EventDispatchThread.run() line: 122
Thread [DestroyJavaVM] (Suspended)
【讨论】:
Ctrl+Break 和 *nix 上的 kill -QUIT <pid> 将为您提供这个转储。
如果你附加一个调试器,你可以看到名字并自己猜,
但线程可能是一两个垃圾收集线程, 一些 gui 后台线程,如计时器、清理等。
【讨论】:
此外,如果您启动 jconsole(jdk 中的免费 Java 应用程序)并连接到正在运行的 Java 程序,则有一个“线程”选项卡可以让您查看有多少线程以及您的线程列表可以点击了解更多。
【讨论】: