java - 为什么我的Java程序中突然出现3个线程?

标签 java multithreading

正如标题所暗示的,我不知道我的程序中怎么会有三个线程?

我的建议是:

(1) 主线程

(2) EDT(因为 JButton)

(3) ????

这是我的代码(非常简单):

package newProject;

import javax.swing.JButton;

public class MyExample {

    public static void main(String[] args) {

        System.out.println(Thread.activeCount() + " " + Thread.currentThread());
        MyThread myExample = new MyThread();
        System.out.println(Thread.activeCount() + " " + Thread.currentThread());
    }

}

class MyThread {

    JButton button=new JButton();

                    public MyThread() {

                    }
}

最佳答案

线程的名称总是有帮助的。您可以通过名称列出所有线程:

import java.util.*;

public class ListThreads {

     public static void main(String []args){
        Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
        for (Thread t : threadSet) {
            System.out.println (t.getName());
        }
     }
}

对我来说,它列出了:

  • 终结器
  • 信号调度员
  • 主要
  • 引用处理程序

编辑:threadSet行取自此处:Get a List of all Threads currently running in Java

关于java - 为什么我的Java程序中突然出现3个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673750/

相关文章:

java - 如何在 linux (RedHat 6) 上检查 java 版本

java - 使用多线程java服务器获取客户端ID

java - 发生异常后,即使 AutoCommit 为 false,关闭连接似乎也会提交事务

c++ - 从基于线程的流水线转移到基于任务的并行? (C++)

c# - 有没有一种简单的方法可以通过线程转储来查找线程死锁的原因?

multithreading - 如何限制 Erlang VM (BEAM) 使用的内核数量?

java - 为什么增加线程数没有用?

java - Tolven 源代码到 Eclipse 项目结构

java - 测试 AJAX 文件上传

java - 检查权限时应用程序无法转换为 android.app.Activity