2014-10-31 1 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

+1

Либо используйте отладчик или некоторые ответы здесь http://stackoverflow.com/questions/1323408/get-a-list-of-all-threads-currently-running-in-java, чтобы увидеть имена потоков, указывающие их цели , – Tom

ответ

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()); 
     } 
    } 
} 

Для меня это списка:

  • Финалайзера
  • сигнала грузоотправитель
  • главного
  • Ссылки Handler

EDIT: Строка threadSet была взята отсюда: Get a List of all Threads currently running in Java

Смежные вопросы