Sample ResubmittingScheduledThreadPoolExecutor, the coding is nice! http://www.javaspecialists.eu/archive/Issue154.html Implement thread pool properly - http://www.kimchy.org/juc-executorservice-gotcha/ RetryExecutor - http://nurkiewicz.blogspot.hk/2013/07/asynchronous-retry-pattern.html ScheduledThreadPoolExecutor corePoolSize=0 at JDK9 cause 100% CPU - https://josephmate.github.io/2021-10-03-my-bug-used-up-100cpu-or-did-it/