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

Ayuda con threads

Estas en el tema de Ayuda con threads en el foro de Java en Foros del Web. Estoy haciendo una aplicación en la que tengo que ir mostrando camaras de video en un jPanel consecutivamente. Para realizar esto llamo a un runnable ...
  #1 (permalink)  
Antiguo 18/12/2006, 06:03
 
Fecha de Ingreso: diciembre-2006
Mensajes: 2
Antigüedad: 17 años, 4 meses
Puntos: 0
Ayuda con threads

Estoy haciendo una aplicación en la que tengo que ir mostrando camaras de video en un jPanel consecutivamente.
Para realizar esto llamo a un runnable que me espera y me va ejecutando cada camara realizando una llamada recursiva de la siguiente forma:

miRunnable = new Runnable(){

public void run(){
esperarCamara(i);
iniciarCamara(i);
i++;
/*Llamada recursiva a runnable*/
Thread.currentThread().run();
}
};
hilo = new Thread (miRunnable);
hilo.start();

Como se puede ver, realizo una llamada recursiva a runnable, sincronizandome las camaras como quiero. El problema que tengo es que al realizar llamadas recursivas a runnable, un controlador de camaras no se da cuenta que la aplicacion sigue ejecutando. (cuando las ejecuto por primera vez en threads fuera de runnable si realiza lo que quiero)

Quería preguntar si hay alguna forma de informar a la aplicación principal desde runnable de que se sigue ejecutando o si hay alguna forma de ejecutar algo asi sin usar Runnable.(alguna idea con threads)

Muchas gracias.

Última edición por davilinr; 18/12/2006 a las 06:14 Razón: incompleto
  #2 (permalink)  
Antiguo 18/12/2006, 07:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Ayuda con threads

eummmm

¿No sería más fácil hacer un bucle dentro del run() en vez de llamar recursivamente al run de un Thread/Runnable? Llamar directamente al run() de un Thread no es algo que se deba hacer, ya que internamente los Threads hacen cosas antes y despues de ejecutar el run(), que es un método especial.

Lo que no entiendo es cual es el problema, ¿tu programa termina sin esperar a que acabe el Runnable?
  #3 (permalink)  
Antiguo 19/12/2006, 04:10
 
Fecha de Ingreso: diciembre-2006
Mensajes: 2
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Ayuda con threads

Ya he pasado mi llamada recursiva a un bucle, y va un poco mejor. El problema que tengo es que para que se visualicen las camaras, se ejecuta un metodo (update) que recibe un evento desde un modulo de video exterior. (estoy trabajando con Java Media FrameWork).
Este metodo se ejecuta cuando descubre en la aplicacion que le doy a start a la camara, pero dentro de runnable, ignora estas llamadas a start. Por esto quería saber si hay alguna forma de avisar al thread principal desde dentro de runnable o algo así, para que la aplicación se de cuenta de lo que se esta haciendo dentro de runnable. Porque si le doy a start y a esperar a las camaras desde threads en la aplicacion (fuera de un runnable), me espera la aplicacion completa, y eso no quiero.

un saludo, gracias
  #4 (permalink)  
Antiguo 19/12/2006, 06:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Ayuda con threads

No entiendo bien todo el montaje, ya que es un poco confuso así como lo dices (entiendo que es dificil explicar una aplicacion multithread, pero entenderla de una explicacion de texto lo es más ).

Sin embargo, como normal general el thread principal no debe quedarse nunca esperando y normalmente lo que hace es tener "Listener" que le notifican de eventos. Para cada "estimulo externo" que haga que te tengas que quedar esperando, lo suyo es crear un Thread que sea el que se quede bloqueado ahi y notifique a tu aplicacion principal cuando pase algo ( a través de un metodo o usando el modelo de los Listener ).

Así el thread principal siempre "responde" y los que se quedan colgados son Threads aparte (a través de Runnable o extendiendo Thread, es lo mismo).
  #5 (permalink)  
Antiguo 27/12/2006, 14:57
 
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires
Mensajes: 1
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Ayuda con threads

Quizás el problema ya esta solucionado (es que soy nuevo en el sitio).
Entiendo muy poco, pero me parece que por lo que leí...
Se ejecuta una vez bien luego, se queda colgada la aplicación principal (ósea el thread del main). A mí me ocurrió algo parecido en una aplicación cliente servidor, en la que empleé el patrón MVC. El problema era que recibía un comando del servidor y solo lo actualizaba una vez, la solución que encontré fue tener 3 hilo, uno escucha al cliente (main), el segundo al servidor, y el tercero actualizaba al cliente.
Parece que el tercero esta de mas, pero como la actualización de la vista implicaba un acceso al servidor, el mismo da una respuesta, que debe ser escuchada, y el que escucha esta actualizando la aplicación, así generándose la suspensión de un hilo.
Se me ocurre que puede estar pasando algo así.
Perdón si entendí cualquier cosa.
Saludos
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:39.