我得到了一些代码,如果我只使用带有初始化的声明,如
private static ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
这会让我java.util.concurrent.RejectedExecutionException
兴奋
executor.scheduleWithFixedDelay(runnable, 0, 2000, TimeUnit.MILLISECONDS);
但是如果我之前再次初始化
executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleWithFixedDelay(runnable, 0, 2000, TimeUnit.MILLISECONDS);
一切运行正常。这是为什么?我发现的所有示例都不会在调度之前每次都执行 SingleThreadExecutor。我认为这只是设置池大小。它应该在声明期间被初始化?我很困惑:)谢谢