Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Duda sobre sincronización (http://www.forosdelweb.com/f45/duda-sobre-sincronizacion-493792/)

CtrlAltSupr 29/05/2007 16:32

Duda sobre sincronización
 
Hola,

Tengo un problema con un programa en Java y me gustaria saber vuestra opinión.

Os explico:

Tengo una interfaz grafica (JFrame) con un botón que cuando se pulsa ejecuta un código que realiza un conjunto de tareas. Lo que quiero es que, a medida que se ejecute dicho código, se visualize información sobre su evolución en la interfaz gráfica.

Cuando aún no tenia interfaz, mostraba los mensajes a través de la salida estándard (con un System.out.println) y el funcionamiento era el esperado. Pero cuando he intentado meterle la interfaz, los mensajes no salen hasta que se ha ejecutado todo el código.

Mi pregunta es: como deberia hacerlo para que los mensajes se visualizen a medida que se producen y no todos al final?

threads? syncronized?... estoy un poco perdida, si alguien me puede dar alguna idea o pasarme algun link se lo agradeceré mucho.

Gracias

B** 29/05/2007 18:46

Re: Duda sobre sincronización
 
Pues yo pienso que si podrias usar threads.... ya que eso hace que se ejecuten tareas, sin necesidad de esperar a otras, es decir son independientes.

chuidiang 29/05/2007 22:39

Re: Duda sobre sincronización
 
Hola:

Cuando se ejecuta algo como consecuencia de la pulsación de un botón o evento de teclado, ese algo se ejecuta en el mismo hilo que se encarga de repintar las ventanas. Por eso, todo lo que hagas ahí no se verá hasta que termines. Si en ese código vas haciendo cosas sobre las ventanas, no verás los resultados hasta el final, todo de golpe, que es lo que te está pasando.

La solución es en el código del evento lanzar un hilo nuevo para liberar el hilo de pintado de ventanas lo antes posible. En ese hilo nuevo ya sí puedes ir mostrando cosas sobre las ventanas y las verás inmediatamente.

Echa un ojo a estos enlaces para más información
El hilo de awt.
Animación en java.

Se bueno.

CtrlAltSupr 30/05/2007 01:48

Re: Duda sobre sincronización
 
He mirado estos ejemplos y creo que me pueden ayudar.

Aunque antes de ponerme a añadir threads a mi código, me gustaria saber si realmente me servirá para lo que necesito hacer.

La diferencia que he visto con el ejemplo es que en mi código, el "repintar pantalla" se encuentra dentro del mismo thread que ejecuta la tarea que tarda, ya que es allí donde se genera la información que se debe mostrar.

Sabiendo que algunas de las tareas son dependientes entre sí, puedo seguir la misma estratégia de threads?

Gracias a todos

PD. Necesito ayuda urgente para terminar mi proyecto final de carrera :'(

chuidiang 30/05/2007 06:36

Re: Duda sobre sincronización
 
Hola:

si llamas a repaint(), eso lanza un evento de necesidad de repintado que se ejecutará en un hilo separado. Si llamas a repaint() desde tu nuevo hilo, no deberías tener problemas de repintado.

El método paint() y otros NO lanzan el evento, sino que pintan directamente. Si estás llamando a esos métodos, puede que tengas algún problemilla.

Se bueno.


La zona horaria es GMT -6. Ahora son las 06:23.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.