Revised implementation to make use of a ScheduledExectorService instead of a DelayQueue.