【问题标题】:A lot of threads in java processjava进程中有很多线程
【发布时间】:2011-06-09 09:20:54
【问题描述】:

为什么一个简单的 Java GUI 应用程序会创建这么多线程?

【问题讨论】:

  • 这不是简单的 gui,伙计。
  • @Suraj,这是一个任务管理器,他用它来查看为他的 java 应用程序生成了多少线程。
  • @Lirik 我的评论应该是双关语:)

标签: java multithreading jvm


【解决方案1】:

Java 在很多事情上都使用线程:

  • 当然是应用程序的主线程
  • 应用程序启动的任何线程(例如 SwingWorker)
  • Swing 有一个单独的事件调度线程以及其他一些内务线程
  • 定时器,其中一些可能会隐式启动
  • 垃圾收集的一个或多个线程
  • 我认为通常有一个单独的线程准备运行关闭挂钩
  • 其他 JVM 内部的东西

【讨论】:

    【解决方案2】:

    一个简单的 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)  
    

    【讨论】:

    • 太棒了。你用的是什么程序?
    • eclipse IDE - 使用调试器启动 JFrame 程序
    • @zim32,这看起来像一个线程转储。 Windows 上的 Ctrl+Break 和 *nix 上的 kill -QUIT <pid> 将为您提供这个转储。
    【解决方案3】:

    如果你附加一个调试器,你可以看到名字并自己猜,

    但线程可能是一两个垃圾收集线程, 一些 gui 后台线程,如计时器、清理等。

    【讨论】:

      【解决方案4】:

      此外,如果您启动 jconsole(jdk 中的免费 Java 应用程序)并连接到正在运行的 Java 程序,则有一个“线程”选项卡可以让您查看有多少线程以及您的线程列表可以点击了解更多。

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 2015-12-13
        • 2020-03-06
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多