[concurrency-interest] ScheduledThreadPoolExecutor thread timeout

David Holmes davidcholmes at aapt.net.au
Sat Feb 1 02:09:37 EST 2014


I wrote:
> Zhong Yu writes:
> >
> > In this simple example, the JVM never exits:
> >
> >     public static void main(String[] args)
> >     {
> >         ScheduledThreadPoolExecutor exec =
> >             new ScheduledThreadPoolExecutor(1);
> >         exec.schedule( ()-> System.out.println("done"),
> >             1, TimeUnit.SECONDS );
> >     }
> >
> > because the core thread cannot timeout.
> >
> > This creates a problem in a hot-reload environment, where each new app
> > instance creates a new scheduler thread that never terminates. Is
> > there a workaround to the effect that the thread can timeout? Thanks.
>
> There's no way to have the thread timeout and still have a
> functioning executor when there is a task waiting to be
> scheduled. If you don't care about it functioning correctly then
> call allowCoreThreadTimeOut(true) and set your desired timeout.

Correction the idle timeout won't kick-in if there is a task waiting to be
scheduled. Once there are no tasks then the core thread can timeout.

David

> David
>
> > Zhong Yu
> > _______________________________________________
> > Concurrency-interest mailing list
> > Concurrency-interest at cs.oswego.edu
> > http://cs.oswego.edu/mailman/listinfo/concurrency-interest



More information about the Concurrency-interest mailing list