ScheduledExecutorService eredita due metodi da ExecutorService, shutdown() e shutdownNow(). La differenza tra loro:Miscela di shutdown() e shutdownNow()
shutdown
avvia uno spegnimento ordinato in cui vengono eseguite attività precedentemente inoltrate, ma non verranno accettate nuove attività. L'invocazione non ha alcun effetto aggiuntivo se è già stata chiusa.
shutdownNow
tenta di interrompere tutte le attività che eseguono attivamente, interrompe l'elaborazione delle attività in attesa e restituisce un elenco delle attività che erano in attesa di esecuzione.
Ora voglio interrompere l'elaborazione delle attività di attesa mentre non voglio interrompere le attività di esecuzione in corso. Non riesco ad interrompere i thread perché le librerie di terze parti sono coinvolte e non si adattano bene agli interrupt :-(Ma ho bisogno di cancellare le attività scheduled, che non sono attualmente in esecuzione poiché la maggior parte di esse sono programmate in un'ora o giù di lì.
Qual è il modo migliore per affrontare questo Quali opzioni devo
Una combinazione di 'shutdown' e [' awaitermination'] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html#awaitTermination-long-java. util.concurrent.TimeUnit-) deve fare il trucco. – marcospereira
@marcospereira 'awaitermination' attenderà fino al termine dell'ultima operazione pianificata. – steffen