CronScheduler: a reliable Java scheduler for external interactions

A walk through inconsistencies between different notions of time and the related pitfalls.

ScheduledThreadPoolExecutor is prone to unbounded clock drift

java.util.Timer freezes periodic tasks or piles them up when system time is shifted

Neither ScheduledThreadPoolExecutor nor Timer take machine suspension into account

Solution: CronScheduler

Schedule periodic tasks at round wall clock times

Skip to latest periodic task runs

Recommendations: which scheduler to use when?

In real code

Where do I get CronScheduler and how to get started?

Writing about systems, technology, philosophy.