Ho un singleThreadExecutor che sto alimentando un Runnable con uno scheduledFixedDelay come questoPosso forzare un'esecuzione extra di un'esecuzione pianificata?
Runnable periodic = new Runnable() { ... }
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES);
Verrà eseguito con 1 minuto di ritardo tra le esecuzioni. Il problema è che a volte ho bisogno di eseguirlo "su richiesta". È possibile?
Ho pensato di annullare l'esecuzione, eseguire il Runnable e riavviare l'esecuzione, ma quello che mi piacerebbe davvero è un metodo semplice che esegue solo il Runnable a capo del tempo e lo riprogramma per eseguirlo di nuovo in un minuto.
Ma se l'esecutore già hanno questa Runnable o di esecuzione o in programma quello che accadrà poi ? –
Sarebbe eseguito entrambe le volte che lo hai chiesto di eseguire. –
Anche se non esattamente quello che volevo, ho approvato questa risposta. Mi piacerebbe davvero fare l'esecuzione * pianificata * ora invece di quando era stata pianificata, ma funziona anche per aggiungere il periodico come un nuovo lavoro una tantum mentre sto usando un singleThreadScheduledExecutor. –