From Doug Lea's TODO list:
5. TimeoutExecutor (or some better name)
A custom executor with method something like:
Future submit(Runnable mainTask, Runnable timeoutTask, long time, TimeUnit)
This sets mainTask in motion. If it does not complete within time,
it is cancelled and timeoutTask runs (among several variations).
This can use custom internal queue that doesn't have all the problems
encountered in this usage pattern by those inside Timer and
ScheduledThreadPoolExecutor, JSR203 is very likely to ask us to
develop these for use in async IO, where they may become heavily used.