Warum erzeugt ScheduledExecutorService keine Threads nach Bedarf?

In meiner Anwendung verwende ich ScheduledExecutorService, es wird jedoch nur ein Thread für die geplanten Aufgaben erstellt. Liegt das daran, dass ScheduledExecutorService keine Threads erzeugt, um die ausstehenden Aufgaben zu verarbeiten?

Hier ist ein Code-Snippet, das nur "run () 1" anstelle des erwarteten "run () 1" gefolgt von "run () 2" ... "run () 10 ausgibt."

public class App {

    public static void main(String[] args) {
        int N = 10;
        Runnable runner = new Runnable() {

            public void run() {
                foo();
            }
        };
        for (int i = 0; i < N; i++) {
            executor.schedule(runner, i, TimeUnit.MILLISECONDS);
        }
    }

    private static void foo() {
        System.out.println("run() " + (++n));
        synchronized (executor) {
            try {
                executor.wait();
            } catch (InterruptedException ex) {
                Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        System.out.println("finished()");
    }
    private static Logger logger = Logger.getLogger(App.class.getName());
    private static int n = 0;
    private static ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage