Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/07/2011, 09:59
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Problema con animación (Threads)

Hola,

Cuando creas una aplicación basada en el ambiente gráfico como AWT o Swing no puedes modificar o llamar a los métodos de los componentes (Component) desde otro hilo porque estas librerías gráficas no son multithreading.

El método clásico que se usa es 'programación orientada a eventos', se crean interfaces para que el programa principal pueda invocar métodos específicos de los hilos y estos últimos generan eventos que son escuchados por el programa principal.

Por ejemplo, las clases que contienen los hilos pueden tener métodos que afectan su comportamiento y que pueden ser llamadas desde el main, estas mismas clases tienen varios método que permiten agregar Listeners, el main debe implementar esos Listeners y agregarse el mismo con addEventListener (también funciona con clases auxiliares como delegados).

Cuando el hilo se detiene o desea informar al main sobre algúna acción que ocurrió, la clase que ejecuta el hilo genera el evento, como el main estaba escuchando por eventos entonces recibe un mensaje, ese mensaje puede contener cualquier información que sea necesaria, como el objeto que emitio el evento, el status y cualquier otra información relevante.

Así el main se encarga de realizar las acciones reales en el hilo de AWT y Swing, que como dijimos al principio no pueden ser usados desde multiples hilos. El manejo real de las acciones debe estar muy bien diseñado para que la aplicación funcione correctamente.

Para comprender como funciona el sistema de eventos puedes buscar información sobre EventListenerList, java.awt.event así como javax.swing.event, como por ejemplo: http://www.java2s.com/Tutorial/Java/...stenerList.htm

Saludos,

Última edición por HackmanC; 23/07/2011 a las 10:06 Razón: edit