Я создал простое JAVA-приложение, которое имеет JFrame и немного JButtons. Когда я пытался осмотреть JAVA-приложение с помощью JVMTI, я нашел, что, хотя я не создал явных потоков, была партия их порождена.
Я мог найти следующие потоки:
Большинство из них было в Выполнимом состоянии. Кто-то может сказать мне функцию этих потоков?
Эти потоки используются базовыми библиотеками для управления виджетами, отображением, циклом событий и другими компонентами, необходимыми для графического приложения.
GUI-приложение обычно имеет множество движущихся частей, и, если вы заметили, вам не нужно явно писать код для управления этими частями (например, обновление экрана, или рисование кнопки, или обработка движения мыши). Именно этот набор фоновых потоков отвечает за управление этими частями и позволяет вам как можно легче сосредоточиться на логике вашего приложения.
Эти потоки порождаются библиотеками, которые вы используете (например, AWT, Swing и т.д.), и обычно очищают себя (и ресурсы, которыми они управляют) после завершения.
Я могу назвать вам одно и предположить три ...
Это графический интерфейс / Awt / Swing нить.Все, что пишется в графический интерфейс, должно выполняться в этом потоке! Иногда, если я думаю, что есть момент, когда другой поток МОЖЕТ писать в графический интерфейс, я перехожу к точке, где, как мне кажется, может произойти конфликт, и утверждаю, что имя текущего потока совпадает с "AWT-EventQueue-0" .
Мне очень жаль, что Sun не выпустила версию библиотеки «Debug», которая утверждала бы правильное использование потоков во всех компонентах - это избавило бы от многих головных болей и избавило бы Java от действительно плохого REP из-за сбоев графического интерфейса пользователя, когда он действительно люди, которые не понимают в этой ветке.
Вероятно, все они связаны с многопоточным сборщиком мусора: