Foros del Web » Programación para mayores de 30 ;) » Java »

Duda sobre sincronización

Estas en el tema de Duda sobre sincronización en el foro de Java en Foros del Web. Hola, Tengo un problema con un programa en Java y me gustaria saber vuestra opinión. Os explico: Tengo una interfaz grafica ( JFrame ) con ...
  #1 (permalink)  
Antiguo 29/05/2007, 16:32
 
Fecha de Ingreso: diciembre-2006
Mensajes: 25
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta 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
  #2 (permalink)  
Antiguo 29/05/2007, 18:46
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
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.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #3 (permalink)  
Antiguo 29/05/2007, 22:39
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
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.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 30/05/2007, 01:48
 
Fecha de Ingreso: diciembre-2006
Mensajes: 25
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta 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
  #5 (permalink)  
Antiguo 30/05/2007, 06:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
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.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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