[concurrency-interest] ExecutorCompletionService for scheduled task

Joe Bowbeer joe.bowbeer at gmail.com
Sun Aug 13 14:52:33 EDT 2006


Have you thought about scheduling additional tasks whose job it is to
cancel the previously submitted tasks (and eventually close their
resources)?

For each task you schedule on the completion service, I'm imagining
you would schedule another task (or two) on a "cancellation service".
If a task completes in time, you would cancel its associated
cancellation task(s).  Otherwise, the cancellation task will cancel
its associated task and you'll dequeue that failed task from the
completion service.

If timing is a bit more complicated, each task may need to schedule
its own cancellation when it runs.  This is harder to do, I think,
because some of the wrapping added by the scheduled executor and/or
the completion service.


On 8/13/06, Hanson Char <hanson.char at gmail.com> wrote:
> That's what I am using.  Specifically:
>
>  Executors.newScheduledThreadPool(...);
>
> plus other code to schedule via the ScheduledExecutorService, and then
> to wait for timeout via the ScheduledFuture.get(...)
>
> Just wonder if there is a better (lazier) way.
>
> Hanson
>
> On 8/13/06, Dhanji R. Prasanna <dhanji at gmail.com> wrote:
> > Have you looked into using ScheduledThreadPoolExecutor with CompletionService?
> > The schedule() method takes a delay which can be used to trigger the
> > close operation.
> >
> > Not sure if this is exactly what you want to do?
> >
> > On 8/13/06, Hanson Char <hanson.char at gmail.com> wrote:
> > > Hi,
> > >
> > > I am not sure if the existing ExecutorCompletionService can be nicely
> > > fitted here.  What we want is a scheduled close operation to be
> > > initiated on each open session after m seconds delay, and abort
> > > regardless after a total of n seconds, even if some of these close
> > > operations haven't started or finished, where n > m.
> > >
> > > ExecutorCompletionService.submit() allows some tasks to be submitted
> > > for execution, but there doesn't exist something like
> > > ExecutorCompletionService.schedule() that would take a delay
> > > parameter.
> > >
> > > Thoughts ?
> > >
> > > Hanson Char


More information about the Concurrency-interest mailing list