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

hilos (THREADS) en java como ejecutar un mismo hilo mas de 2 veces

Estas en el tema de hilos (THREADS) en java como ejecutar un mismo hilo mas de 2 veces en el foro de Java en Foros del Web. Hola a todos tengo una duda con este hilo que subprocesa los acciones de mi CRONOMETRO ayuda porfavor, todo esta en que mi thread funciona ...
  #1 (permalink)  
Antiguo 19/08/2012, 14:00
Avatar de youangelazul  
Fecha de Ingreso: julio-2012
Ubicación: Ancash, Huarmey
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 3
Mensaje hilos (THREADS) en java como ejecutar un mismo hilo mas de 2 veces

Hola a todos tengo una duda con este hilo que subprocesa los acciones de mi CRONOMETRO ayuda porfavor, todo esta en que mi thread funciona a maravillas hasta cierto punto cuando lo inicio ".star()", ".suspend()" y luego " .star()" corre super... luego mi hilo finaliza super bien con el ".stop()" pero el error que me ocurre es cuando hago seguido del ".stop()" un ".star()" esto es porque es un cronometro y lo que logicamente es que si hize un conteo y lo cancele quiero iniciarlo nuevamente no puedo no se como hacer eso...

public boolean estado = false;
public int hrs = 0;
public int min = 0;
public int seg = 0;

Thread hilo = new Thread()
{
public void run()
{
try
{
hrs = 0;
min = 0;
seg = 0;

while (true)
{
if (seg == 59)
{
seg=0; min++;
}

if (min==59)
{
min=0;
hrs++;
}

seg++;

hilo.sleep(1000);
}
} catch (java.lang.InterruptedException ie)
{
System.out.println(ie.getMessage());
}
}
};


private void btnStarActionPerformed(java.awt.event.ActionEvent evt)
{
if (!estado)
{
permiso = true;
hilo.start();
}
else{
hilo.resume();
}
}

private void btnPauseActionPerformed(java.awt.event.ActionEvent evt)
{
hilo.suspend();
}

private void btnStopActionPerformed(java.awt.event.ActionEvent evt)
{
permiso = false;
hilo.stop();
}

Espero su ayuda creo que si lo interrumpo con el .STOP() siempre habeses causa errores lo intente poniendole en while un boolean como variable haciendo que muera el hilo de forma natural pero igual cuando quiero ejecutar el hilo por segunda ves me sale error a que se debe UNA AYUDA ES URGENTE, GRACIAS DE ANTE MANO...
  #2 (permalink)  
Antiguo 19/08/2012, 16:53
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: hilos (THREADS) en java como ejecutar un mismo hilo mas de 2 veces

bueno hay que ver que el metodo suspend y el metodo stop, son deprecated, es decir, no debes usarlos.... aun que claro se justifique su uso, que ya no deberia de hacerse, pero bueno..

Cuando usas el .suspend() deberías usar .resume() para volverlo a correr y no el método .start(), el método .stop() lleva al hilo a un estado de muerte, si haces .start() deberá salirte una exception algo asi como "IlegallStateException"...

En tu caso que necesitas pausar el hilo, puedes usar .wait() y cuando quieras continuar haces .nodity(); claro estos metodos se usan en un objeto, pero igual te sirven para lo mismo...

Otro puedes usar otro Thread, al momento de que le pones pause al cronometro creas otro Thread, y al thread actual que vas a pausar le das un nuevoThread.join() asi al thread de pausado lo mantienes vivo hasta que le den en continuar cronometro matas el hilo, y el otro hilo que se quedo en join continuará corriendo...

O bien, como el metodo anterior pero sin crear otro hilo, si no usando el MainThread, usando tu hilo cronometro haces el .join pero con el mainThread, en el momento que pulse el boton de continuar contando haces un threadCronometro.interrupt() y eso lo reactivará...

Son varias las formas que puedes usar, sin hacer uso de métodos deprecated.....
__________________
De nada, hay te encargo +1...

Etiquetas: hilos, multiproceso, multitarea, threads
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 09:43.