Problem: I have a requirement to call a dao method at fix rate say every 10 sec, then I need to check if the result is valid if yes exit, else keep on call
A slightly simpler method, you don't need a separate executor service for the terminator, you could simply push the terminator task into the same executor.
Even simpler. Have PollerTask
place it's result in a BlockingQueue
. Then have the PollingTaskRunner
do a timed poll
on that BlockingQueue
. Whenever control is returned from the poll
call ScheduledFuture.cancel
because the task either succeeded or timed out.