Re ejecutar un timer
Tengo un problema, nose como hacer para volver a ejecutar un timer.
Me sale este error:
Exception in thread "Timer-0" java.lang.IllegalStateException: Task already scheduled or cancelled
at java.util.Timer.sched(Unknown Source)
at java.util.Timer.schedule(Unknown Source)
at com.cuponium.timer.TimerPrincipal.comenzar(TimerPrincipal.java:71)
at com.cuponium.timer.TimerPrincipal$1.run(TimerPrincipal.java:25)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
-------------------------------------------
Este es mi codigo:
public class TimerPrincipal {
int i=0;
String fechaHora= "01/08/2011 09:55:30";
Date fechaHoraDate=null;
// Clase en la que está el código a ejecutar
TimerTask timerTask = new TimerTask()
{
public void run()
{
System.out.println("Hola!");
agregarUnDia();
comenzar();
}
};
public Date agregarUnDia(){
Date fecha=null;
Calendar cal=Calendar.getInstance();
cal.setTime(fechaHoraDate);
cal.add(Calendar.DATE, 1);
//Calendar cal2=Calendar.getInstance();
fecha =cal.getTime();
fechaHoraDate=cal.getTime();
System.out.println("Agreagada:"+fechaHoraDate);
return fecha;
}
public void comenzar(){
if(i==0){
SimpleDateFormat forma = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
try {
fechaHoraDate=forma.parse(fechaHora);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
i++;
}
System.out.println(fechaHoraDate);
Timer timer = new Timer();
timer.schedule(timerTask, fechaHoraDate);
}
public static void main(String[] args) {new TimerPrincipal();}
public TimerPrincipal() {comenzar();}
}
- Inicie sesión o regístrese para enviar comentarios
Quita comenzar();
En el método run vuelves a llamar al método comenzar y en el método comenzar utilizas de nueva cuenta el TimerTask. Si lo que deseas es ejecutar el timer cada cierto tiempo, en el método schedule esta sobrecargado y recibe el periodo...
ScheduledExecutor
Es más recomendable usar el
que el
. La razón es que el ScheduledExecutorService puede echar a andar tareas periódicas de tipo
y
, que son interfaces de uso más general que
, que sólo sirve para usar con el
. Además, un ScheduledExecutor puede tener varios hilos de ejecución o uno solo, según se configure, para ejecutar las tareas que se le indique.
Xuxa no me habian presentado
Xuxa no me habian presentado al ScheduledExecutorService.
Buena vox gracias lo voy a revisar.