[concurrency-interest] Executors: Wrapper to cancel tasks in shutdownNow()?

Bryan Thompson bryan at systap.com
Wed Apr 14 11:05:55 EDT 2010


Yes it would.

This sort of thing is not really called out in the javdoc for ExecutorService#shutdownNow().  I was thinking that it would be nice if people could use a standard wrapper ala the Executors delegation patterns for this.  That might help to reduce problems whose cause is a task which was never cancelled due to shutdownNow().

Bryan

________________________________
From: tpeierls at gmail.com [mailto:tpeierls at gmail.com] On Behalf Of Tim Peierls
Sent: Wednesday, April 14, 2010 11:01 AM
To: Bryan Thompson
Cc: concurrency-interest at cs.oswego.edu
Subject: Re: [concurrency-interest] Executors: Wrapper to cancel tasks in shutdownNow()?

Right, sorry. Would something like this do the trick for you?

public class Util {
    private Util() { /* uninstantiable */ }

    public static void shutdownNowCancelingUnstarted(ExecutorService exec) {
        for (Runnable unstarted : exec.shutdownNow()) {
            if (unstarted instanceof RunnableFuture) {
                RunnableFuture<?> task = (RunnableFuture<?>) unstarted;
                task.cancel(false);
            }
        }
    }
}

--tim

On Wed, Apr 14, 2010 at 10:42 AM, Bryan Thompson <bryan at systap.com<mailto:bryan at systap.com>> wrote:
Yes, but threads can already be waiting on their Future's, right? Bryan

________________________________
From: tpeierls at gmail.com<mailto:tpeierls at gmail.com> [mailto:tpeierls at gmail.com<mailto:tpeierls at gmail.com>] On Behalf Of Tim Peierls
Sent: Wednesday, April 14, 2010 10:42 AM
To: Bryan Thompson
Cc: concurrency-interest at cs.oswego.edu<mailto:concurrency-interest at cs.oswego.edu>
Subject: Re: [concurrency-interest] Executors: Wrapper to cancel tasks in shutdownNow()?

The tasks returned by shutdownNow haven't begun execution, so there's no need to cancel them.

--tim

On Wed, Apr 14, 2010 at 9:53 AM, Bryan Thompson <bryan at systap.com<mailto:bryan at systap.com>> wrote:
Hello,

Is there some handy delegation pattern available, such as found on Executors, to wrap an ExecutorService implementation such that ExecutorService#shutdownNow() cancels each task in the returned list?  While this might not always be want people want to do, it does seem to be a very common pattern.

Thanks,
Bryan
_______________________________________________
Concurrency-interest mailing list
Concurrency-interest at cs.oswego.edu<mailto:Concurrency-interest at cs.oswego.edu>
http://cs.oswego.edu/mailman/listinfo/concurrency-interest


_______________________________________________
Concurrency-interest mailing list
Concurrency-interest at cs.oswego.edu<mailto:Concurrency-interest at cs.oswego.edu>
http://cs.oswego.edu/mailman/listinfo/concurrency-interest


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20100414/7376812d/attachment.html>


More information about the Concurrency-interest mailing list