2010-02-10 5 views
5

He creado una aplicación Java simple que tiene un JFrame y pocos JButtons. Cuando traté de inspeccionar la aplicación Java utilizando JVMTI, descubrí que, aunque no creé ningún hilo explícito, muchos de ellos se generaban.¿Qué son estos subprocesos que se spwaned cuando una aplicación Java comienza su ejecución?

que pude encontrar los siguientes temas:

  • DestroyJavaVM
  • AWT-EventQueue-0
  • AWT-apagado
  • AWT-XAWT- Daemon Hilo
  • Java2D Disposer- Daemon Hilo
  • Thread-0- Daemon Thread [Creado por el agente de JVMTI]
  • Señal dispatcher- Daemon Hilo
  • Finalize- Daemon Hilo
  • Referencia Handler- Daemon Hilo

La mayoría de ellos estaban en estado ejecutable. ¿Puede alguien decirme la función de estos hilos?

Respuesta

9

Estas hebras son utilizadas por las bibliotecas subyacentes para administrar los widgets, la visualización, el bucle de eventos y otras tuberías que se necesitan para su aplicación gráfica.

Una aplicación de GUI generalmente tiene muchas partes móviles, y si se ha dado cuenta no tiene que escribir explícitamente ningún código para administrar estas partes (por ejemplo, actualizar la pantalla, dibujar un botón o manejar una movimiento del mouse). Es este conjunto de hilos de fondo que se encargan de gestionar estas partes, y lo más fácil posible para centrarse en la lógica de la aplicación.

Estos subprocesos son generados por las bibliotecas que utiliza (por ejemplo, AWT, Swing, etc.) y generalmente se limpian ellos mismos (y los recursos que administran) hasta la finalización.

1

te puedo decir uno, y supongo que a las tres ...

  • AWT-EventQueue-0

Esta es la interfaz gráfica de usuario/Awt hilo/Swing. ¡Cualquier cosa que escriba en la GUI debe ejecutarse en este hilo! A veces, si creo que hay un punto en el que otro hilo podría estar escribiendo en la GUI, llegaré al punto donde creo que podría estar ocurriendo la afirmación y afirmaré que el nombre del hilo actual coincide con "AWT-EventQueue-0" .

Realmente desearía que Sun hubiera lanzado una versión de "Debug" de la biblioteca que afirmara el uso correcto de subprocesos en todos los componentes, habría ahorrado muchos dolores de cabeza y le habría ahorrado a Java tener un REP realmente malo para colgar GUIs cuando es realmente gente que no entiende sobre este hilo.

Estos son probablemente relacionados con el colector de basura rosca:

  • Java2D Disposer- Daemon Hilo
  • Finalize- Daemon Hilo
  • Referencia Handler- Daemon Hilo
Cuestiones relacionadas