Executor and Daemon in Java Executor and Daemon in Java multithreading multithreading

Executor and Daemon in Java


Check out the JavaDoc for newSingleThreadScheduledExecutor(ThreadFactory threadFactory)

It would be implemented something like this:

public class MyClass {     private DaemonThreadFactory dtf = new DaemonThreadFactory();    private ScheduledExecutorService executor =                                  Executors.newSingleThreadScheduledExecutor(dtf);    // ....class stuff.....    // ....Instance the runnable.....    // ....submit() to executor....}class DaemonThreadFactory implements ThreadFactory {    public Thread newThread(Runnable r) {        Thread thread = new Thread(r);        thread.setDaemon(true);        return thread;    }}


If you're using a scheduled executor, you can provide a ThreadFactory. This is used to create new Threads, and you can modify these (e.g. make them daemon) as you require.

EDIT: To answer your update, your ThreadFactory just needs to implement newThread(Runnable r) since your WebRunnable is a Runnable. So no real extra work.


Just to complement with another possible solution for completeness. It may not be as nice though.

final Executor executor = Executors.newSingleThreadExecutor();Runtime.getRuntime().addShutdownHook(new Thread() {    @Override    public void run() {        executor.shutdownNow();    }});