Formatting.
Switch from Timer to ScheduledThreadPoolExecutor to minimize damage when a task throws an exception.
Protect future executions from suppression is an exception is thrown.
Log an exception during background thread execution.
Log an exception during background thread execution.
Simplify.