newscheduledthreadpool example ejemplo java multithreading

java - example - Cómo cancelar efectivamente la tarea periódica ScheduledExecutorService



scheduledexecutorservice example (1)

Entonces, utilizando this enlace como referencia, ¿puede alguien sugerir una solución más elegante para cancelar una tarea periódica de ScheduledExecutorService?

Aquí hay un ejemplo de lo que estoy haciendo actualmente:

// do stuff // Schedule periodic task currentTask = exec.scheduleAtFixedRate( new RequestProgressRunnable(), 0, 5000, TimeUnit.MILLISECONDS); // Runnable private class RequestProgressRunnable implements Runnable { // Field members private Integer progressValue = 0; @Override public void run() { // do stuff // Check progress value if (progressValue == 100) { // Cancel task getFuture().cancel(true); } else { // Increment progress value progressValue += 10; } } } /** * Gets the future object of the scheduled task * @return Future object */ public Future<?> getFuture() { return currentTask; }


Le sugiero que use int y programe la tarea usted mismo.

executor.schedule(new RequestProgressRunnable(), 5000, TimeUnit.MILLISECONDS); class RequestProgressRunnable implements Runnable { private int count = 0; public void run() { // do stuff // Increment progress value progressValue += 10; // Check progress value if (progressValue < 100) executor.schedule(this, 5000, TimeUnit.MILLISECONDS); } }