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

Problema con hilo

Estas en el tema de Problema con hilo en el foro de Java en Foros del Web. Hola a quien pueda ayudarme!!! Mi caso es el siguiente: Tengo una ventana que al presionar un botón, el programa llama a muchas funciones para ...
  #1 (permalink)  
Antiguo 07/03/2011, 21:51
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Problema con hilo

Hola a quien pueda ayudarme!!!

Mi caso es el siguiente:

Tengo una ventana que al presionar un botón, el programa llama a muchas funciones para calcular una gran cantidad de datos y lo hace de manera secuencial. Cuando el programa hace todos esos cálculos muestras 4 gráficos en la interfaz y eso se demora mucho. Todo esto se hace en el actionperformed del botón.

Entonces quice que durante tooooooooooodo ese tiempo que se demora en hacer todos esos cálculos, el programa le muestre al usuario un gif animado indicándole que tiene que esperar y justo cuando se terminan de calcular esos resultados, el gif se cierre.

Después de mucho intentar logré que "semiapareciera", es decir, cuando presiono el botón me aparece el ícono del jframe que guarda el giff en la barra de tareas, más no me muestra el giff en el escritorio, me muestra un cuadro negro y justo cuando el programa ahce todos los cálculos y muestra los 4 gráficos, ahí sí muestra bien el gif y se queda ahí sin cerrarse hasta que me toca a mí cerrarlo manualmente desde la barra de tareas.

Muchas gracais a quien pueda ayudarme a que el gif aparezca bien y se cierre cuando el programa muestra los 4 gráficos en pantalla, es decir, caundo acaba la función del actionperformed.
  #2 (permalink)  
Antiguo 08/03/2011, 09:59
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problema con hilo

Hola:

Java ejecuta actionPerformed() en el mismo hilo que usa para pintar las ventanas, por ello, mientras estés calculando y no termine el actionPerformed(), no podrás pintar nada en pantalla. Mejor dicho, si puedes, pero la petición de pintado queda encolada hasta que termine actionPerformed(), que es lo que te está pasando.

La solución es lanzar un nuevo hilo para ejecutar esos cálculos, haciendo que actionPerformed() termine lo más pronto posible

Código java:
Ver original
  1. public void actionPerformed(ActionEvent e) {
  2.    Thread hilo = new Thread() {
  3.       public void run() {
  4.             // mostrar gif animado
  5.             // tus cuentas
  6.             // ocultar gif animado
  7.       }
  8.    };
  9.    hilo.start();   // No te olvides lanzar el hilo
  10. }

Más detalles en http://chuwiki.chuidiang.org/index.p...El_hilo_de_awt

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 08/03/2011, 15:42
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con hilo

Hola amigo, visité el link qu em diste para más información y encontré la solución.
Muchas gracias.

PD: vos cómo sabés tanto?? eres un programador de hace mucho tiempo??? o haz aprendido bastante ayudando a los demás?

Feliz día!
  #4 (permalink)  
Antiguo 12/03/2011, 23:01
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con hilo

Que diferencia existe entre hacerlo como dice el post anterior o utilizando SwingWorker?
Gracias
  #5 (permalink)  
Antiguo 13/03/2011, 04:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problema con hilo

buenas.

llevo mucho tiempo programando, sobre todo swing... y muchas de estas cosas son cosas con las que me he tropezado.

SwingWorker es una clase que facilita hacer lo que pone el post anterior. La diferencia es básicamente decidir si hacerlo a mano o usar una clase java de la api que te facilita la tarea. SwingWorker está disponible a partir de java 1.6, por lo que no se puede usar con versiones anteriores.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 13/03/2011, 13:02
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con hilo

Gracias por tu respuesta, voy a evaluar cual de las dos maneras me queda un codigo mas limpio y claro.
Saludos

Etiquetas: hilo
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 12:14.