2014-10-31 35 views
1

作爲標題暗示我不知道我的程序中可能有三個線程?爲什麼我的Java程序中突然出現3個線程?

我的建議是:

(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() { 

        } 
} 
+2

這是線程[underpant gnomes](http://upload.wikimedia.org/wikipedia/en/d/dd/Gnomes_plan.png)用來產生利潤。 :)除了開玩笑之外,你不應該擔心它,JVM可以根據需要自由創建任意多的線程。您可以用['jvisualvm'](http://docs.oracle.com/javase/7/docs/technotes/tools/share/jvisualvm.html)將其全部列出來,而不是試圖猜測它們的可能性。 ) – biziclop 2014-10-31 11:37:22

+1

要麼使用調試器或一些答案在這裏http://stackoverflow.com/questions/1323408/get-a-list-of-all-threads-currently-running-in-java看到線程名稱以指示他們的目的。 – Tom 2014-10-31 11:39:08

回答

2

線程的名字總是有益的。

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

相關問題