Каковы эти потоки, которые spwaned, когда приложение Java начинает свое выполнение? - PullRequest
5 голосов
/ 10 февраля 2010

Я создал простое Java-приложение с JFrame и несколькими JButton. Когда я попытался проверить Java-приложение с помощью JVMTI, я обнаружил, что, хотя я не создавал явных потоков, их было много.

Я мог бы найти следующие темы:

  • DestroyJavaVM
  • АВТ-EventQueue-0
  • AWT-Shutdown
  • AWT-XAWT- Демоническая нить
  • Java2D Disposer - Поток Демона
  • Thread-0 - Поток демона [создан агентом JVMTI]
  • Диспетчер сигналов - Нить демона
  • Завершение - Нить демона
  • Ссылочный обработчик - Демоническая нить

Большинство из них были в состоянии Runnable. Может кто-нибудь сказать мне функцию этих потоков?

Ответы [ 2 ]

9 голосов
/ 10 февраля 2010

Эти потоки используются базовыми библиотеками для управления виджетами, дисплеем, циклом обработки событий и другой сантехникой, необходимой для вашего графического приложения.

Приложение с графическим интерфейсом обычно имеет много движущихся частей, и, если вы заметили, вам не нужно явно писать какой-либо код для управления этими частями (например, обновление экрана, рисование кнопки или обращение с мышью). движение). Является ли этот набор фоновых потоков, отвечающих за управление этими частями, и позволяющих вам максимально упростить фокусировку на логике вашего приложения.

Эти потоки создаются библиотеками, которые вы используете (например, AWT, Swing и т. Д.) И обычно очищают себя (и ресурсы, которыми они управляют) после завершения.

1 голос
/ 10 февраля 2010

Я могу сказать вам одно, и угадайте на трех ...

  • AWT-EventQueue-0

Это поток GUI / Awt / Swing.Все, что пишет в GUI, должно выполняться в этом потоке!Иногда, если я думаю, что есть точка, в которой другой поток МОЖЕТ писать в GUI, я перейду к точке, где, по моему мнению, может возникнуть конфликт, и я утверждаю, что имя текущего потока соответствует "AWT-EventQueue-0".,

Мне бы очень хотелось, чтобы Sun выпустила «отладочную» версию библиотеки, которая утверждала правильное использование потоков во всех компонентах - это избавило бы от многих головных болей и избавило бы Java от наличия действительно плохого REP для сбояГрафические интерфейсы, когда на самом деле люди не понимают об этой теме.

Вероятно, все они связаны с многопоточным сборщиком мусора:

  • Java2D Disposer - поток демона
  • Завершить - Поток Демона
  • Ссылочный обработчик - Поток Демона
...