Что это за потоки, которые создаются, когда Java-приложение начинает свое выполнение?

StackOverflow https://stackoverflow.com/questions/2239186

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Мне удалось найти следующие темы:

  • Уничтожить JavaVM
  • AWT-EventQueue-0
  • AWT-Выключение
  • AWT-XAWT — поток демона
  • Java2D Disposer — поток демона
  • Thread-0 — поток демона [созданный агентом JVMTI]
  • Диспетчер сигналов — поток демона
  • Finalize — демоническая нить
  • Обработчик ссылок — поток демона

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

Это было полезно?

Решение

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

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

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

Другие советы

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

  • AWT-EventQueue-0

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

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

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

  • Java2D Disposer — поток демона
  • Finalize — демоническая нить
  • Обработчик ссылок — поток демона
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top