ayuda con Thread
Hola a todos... tengo la siguiente problematica:
Necesito controlar cuando un thread a dejado de existir y caputurar diferentes instantes de este.
Estoy utilizando el siguiente trozo de codigo:
class EscuchaThread extends Thread{
public EscuchaThread(MiThread mt){
this.mt = mt;
}
public void run(){
while(true){
if (!mt.isAlive()){
System.out.println(mt.getMensaje());
break;
}
}
}
private MiThread mt = null;
}
Lo malo es que con este bucle (while(true)) ocupo demasiados clock de procesador y la aplicacion tiende a quedarse pegada.
Alguno de ustedes sabes alguna forma de monitorear cada cierto intervalo de tiempo si el Thread esta vivo y el mensaje que obtengo con el metodo getMensaje() ???
Ojala alguien me pueda ayudar..!!
Necesito controlar cuando un thread a dejado de existir y caputurar diferentes instantes de este.
Estoy utilizando el siguiente trozo de codigo:
class EscuchaThread extends Thread{
public EscuchaThread(MiThread mt){
this.mt = mt;
}
public void run(){
while(true){
if (!mt.isAlive()){
System.out.println(mt.getMensaje());
break;
}
}
}
private MiThread mt = null;
}
Lo malo es que con este bucle (while(true)) ocupo demasiados clock de procesador y la aplicacion tiende a quedarse pegada.
Alguno de ustedes sabes alguna forma de monitorear cada cierto intervalo de tiempo si el Thread esta vivo y el mensaje que obtengo con el metodo getMensaje() ???
Ojala alguien me pueda ayudar..!!
HOLA:
Bueno el problema que detecto en ru programa es exactamente lo que comentas del while, bueno debido a que solo dejaste el valor booleano directo,, entonces ese while siempre se va a cumplir por lo que nunca va a dejar de hacer la condición.
Bien para ese caso te recomiendo que ssignes el valor boleano a una variable es decir:
boolean flag = true;
while(flag){
if (!mt.isAlive()){
System.out.println(mt.getMensaje());
flag = false;
}
}........etc.
Con esto solo se va a ejecutar una sola vez el ciclo hasta que vuelvas a asignar un valor true a flag.
Ahora con respecto a lo que mencionabas de monitorear un Thread puedes hacerlo con un Timmer o con algun otro Thread e incluso con el mismo Thread que estás ocupando, pero ten cuidado con la sincronización. Revisa más esos temas, revisa notify().
Saludos y Suerte
Bueno el problema que detecto en ru programa es exactamente lo que comentas del while, bueno debido a que solo dejaste el valor booleano directo,, entonces ese while siempre se va a cumplir por lo que nunca va a dejar de hacer la condición.
Bien para ese caso te recomiendo que ssignes el valor boleano a una variable es decir:
boolean flag = true;
while(flag){
if (!mt.isAlive()){
System.out.println(mt.getMensaje());
flag = false;
}
}........etc.
Con esto solo se va a ejecutar una sola vez el ciclo hasta que vuelvas a asignar un valor true a flag.
Ahora con respecto a lo que mencionabas de monitorear un Thread puedes hacerlo con un Timmer o con algun otro Thread e incluso con el mismo Thread que estás ocupando, pero ten cuidado con la sincronización. Revisa más esos temas, revisa notify().
Saludos y Suerte