Título: Sincronizar Threads Publicado por: alzehimer_cerebral en 21 Abril 2010, 17:07 pm Hola a todos de nuevo,
he leido articulos de sincronizacion de threads sin encontrar lo que busco. Mi programa tiene el thread principal correspondiente al main, llega un momento en el cual necesito descargar un fichero de un servidor y hasta que dicho fichero no se descargue la ejecucion del programa no puede seguir. Para gestionar la descarga lo hago mediante una clase que extiende a Thread, como puedo parar el thread principal del programa??? Asi es como lo estoy intentando: Código
He visto como sincronizar dos metodos que son synchronized, pero claro no se como hacer el thread principal de este tipo... No se si me explicado bien, cualquier cosa me decis. Gracias de antemano. alzehimer_cerebral Título: Re: Sincronizar Threads Publicado por: alzehimer_cerebral en 21 Abril 2010, 18:08 pm Haber os comento,
el thread del main lo he puesto como synchronized: Código
Si duermo el proceso principal funciona: Código
Pero supongamos que el servidor de donde se descarga el fichero esta saturado y tarda mas de 1seg en descargar el fichero, entonces ya no funcionaria con el sleep(1000)... Me gustaria dejar th en wait y que ThreadForDownload haga un notifyAll para que lo despierte, pero cuando hago eso me salta la siguiente excepcion: Exception in thread "AWT-EventQueue-0" java.lang.IllegalMonitorStateException Título: Re: Sincronizar Threads Publicado por: Leyer en 21 Abril 2010, 18:25 pm Mira este ejemplo que hice
Otra cosa ya no habias preguntado sobre esto creo que el otro hilo te lo habiamos solucionado. Código
Un Saludo. Título: Re: Sincronizar Threads Publicado por: alzehimer_cerebral en 21 Abril 2010, 19:37 pm Si habia preguntado algo parecido, pero el codigo que me has puesto me ayuda todavia mas... De todas formas he optado en no usar un thread para la descarga ya que si la ejecucion del programa al final es secuencial no tiene mucho sentido..
Que opinas LEYER?? Salu2 alzehimer_cerebral Título: Re: Sincronizar Threads Publicado por: Leyer en 21 Abril 2010, 20:09 pm Si habia preguntado algo parecido, pero el codigo que me has puesto me ayuda todavia mas... De todas formas he optado en no usar un thread para la descarga ya que si la ejecucion del programa al final es secuencial no tiene mucho sentido.. Que opinas LEYER?? Salu2 alzehimer_cerebral Cierto, pero tienes que considerar en este caso que si no usas un hilo y tu programa es secuencial , habria problemas en tu interfaz ya que se congelaria hasta que finalize el proceso de descarga, aunke cuando haces wait en la GUI quisas pasara lo mismo habria que aplicar un poco mas de logica en ese caso. Un Saludo. Título: Re: Sincronizar Threads Publicado por: alzehimer_cerebral en 21 Abril 2010, 21:06 pm Que se podria hacer para que no se congelase la GUI, mi inexperiencia con threads no me permiten barajar otras opciones a la que previamente me comentaste.
Un saludo. alzehimer_cerebral Título: Re: Sincronizar Threads Publicado por: Leyer en 21 Abril 2010, 21:30 pm Si tienes un proceso muy largo como descargar un archivo, es recomendado usar un hilo que haga esa tarea, ya que si lo colocas supongamos dendro del constructor de la class par la GU todos los componentes estaras congelados hasta que el proceso termine , como tu estas diciendo que lo vas a ser secuencial y todo estara en un solo proceso gui y descarga esto congelara la gui hasta que termine el proceso sin dudas.
Un Saludo. Título: Re: Sincronizar Threads Publicado por: alzehimer_cerebral en 21 Abril 2010, 22:14 pm Pero si separo la descarga en otro thread entonces la GUI no se quedara congelada..
Es eso lo que quieres decir?? alzehimer_cerebral Título: Re: Sincronizar Threads Publicado por: Leyer en 21 Abril 2010, 22:41 pm Pero si separo la descarga en otro thread entonces la GUI no se quedara congelada.. Es eso lo que quieres decir?? alzehimer_cerebral Claro |