[concurrency-interest] ScheduledThreadPoolExecutor thread timeout

Zhong Yu zhong.j.yu at gmail.com
Mon Feb 3 13:02:35 EST 2014


Assume the task does not know it's the last one...

On Mon, Feb 3, 2014 at 8:06 AM, Dr Heinz M. Kabutz
<heinz at javaspecialists.eu> wrote:
> How about doing this for a once-off scheduled task?
>
> import java.util.concurrent.*;
>
> public class ForeverYoung {
>
>  public static void main(String[] args) {
>    ScheduledThreadPoolExecutor exec =
>        new ScheduledThreadPoolExecutor(1);
>    exec.schedule(() -> {
>      System.out.println("done");
>      exec.shutdown();
>    },
>        1, TimeUnit.SECONDS
>    );
>  }
> }
>
> Regards
>
> Heinz
> --
> Dr Heinz M. Kabutz (PhD CompSci)
> Author of "The Java(tm) Specialists' Newsletter"
> Oracle Java Champion 2005-2013
> JavaOne Rock Star Speaker 2012
> http://www.javaspecialists.eu
> Tel: +30 69 75 595 262
> Skype: kabutz
>
>
>
> Zhong Yu wrote:
>>
>> 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.
>>
>> 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