1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
Callable<Boolean> callable = new Callable<Boolean>() {
@Override
public Boolean call() {
boolean condition = false;
if (!condition) {
/* La tâche ne doit plus continuer de s'exécuter. */
return false;
}
// code
/* La tâche doit continuer de s'exécuter. */
return true;
}
};
FutureTask<Boolean> task = new FutureTask<Boolean>(callable) {
@Override
public void run() {
super.run();
try {
if (!get()) {
cancel(false);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch(ExecutionException e) {
e.printStackTrace();
}
}
};
executor.scheduleWithFixedDelay(task, 10, 10, TimeUnit.SECONDS); |
Partager