【问题标题】:With Swing & Java, what is done by the "Swing-Shell" thread使用 Swing 和 Java,“Swing-Shell”线程做了什么
【发布时间】:2011-01-18 18:53:58
【问题描述】:

通过线程和摆动,事件队列(事件调度线程)被广泛呈现和讨论。

但是,当使用 Swing 应用程序检查线程状态时,还有一个名为 Swing-Shell 的线程。通过简短的谷歌搜索,我找不到太多细节,主要是带有错误报告等的线程堆栈跟踪。

谁能简要描述一下该线程的作用。或者更好的是,有人有一些文档的链接

编辑:我问得太快了,没有足够的细节,对不起。我正在经历各种 JFileChooser 问题和一个名为“Swing-Shell”的线程出现在那里,有 与文件系统的 Windows COM 服务有关。 可以在以下位置找到死锁问题中的示例堆栈跟踪 Sun Bug #6741890。 (线程堆栈跟踪以 sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run 开头)。

仔细检查jconsole,我注意到该线程直到 我使用过 JFileChooser(例如 JFileChooser;Swing-Shell 线程可能会启动 通过使用 Win32ShellFolderManager 的任何组件) 使用 JFileChooser 后,该线程似乎也存在。

所以,回答我自己,线程似乎是用于 COM 服务的单独线程 文件相关操作(仅限 Windows?)。如果有人可以提供更多详细信息,欢迎=)

【问题讨论】:

  • 执行线程转储时,该线程的堆栈跟踪是什么样的?
  • 澄清一下,如果您从 Windows 上的命令行启动您的 Swing 应用程序,那么您可以在应用程序运行时在该命令行中按 Ctrl-Break(注意:不是 Ctrl-C)来获取每个正在运行的线程的堆栈跟踪。在 Linux 上也有一种方法可以做到这一点,但我不记得了。

标签: java swing file multithreading


【解决方案1】:

初始线程的数量、用途和命名为implementation dependent。在我的平台上,event dispatch thread (EDT) 被命名为 AWT-EventQueue-0

附录:我发现的唯一另一个 reference 说:“Motif 应用程序使用 shell 小部件与窗口管理器进行通信。”你在使用某种 Swing 库吗?

如上所述,线程转储可能很有启发性。 NetBeans 分析器的最新版本包括一个保存按钮;我在典型的busy demo 中附上了线程的快照。

【讨论】:

  • 是的,我的 EDT 名称相似,但这个“Swing-Shell”似乎不是“初始线程”(至少在链接的意义上)。对我来说,它似乎更像是 Swing 的某个后台守护线程之类的......
猜你喜欢
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
相关资源
最近更新 更多