[concurrency-interest] ScheduledThreadPoolExecutor thread timeout

Dr Heinz M. Kabutz heinz at javaspecialists.eu
Mon Feb 3 09:06:59 EST 2014


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