Spring SmartLifecycle start() 方法未执行

Spring SmartLifecycle start() method not executed

在我的 spring 应用程序中,我有一个线程池管理器,它在 start() 期间创建一些线程并将它们添加到池中。但是虽然 运行 start() 方法永远不会执行。

@Component
public class ThreadPoolManager implements SmartLifecycle {

    private static final Logger logger = 
      LoggerFactory.getLogger(ThreadPoolkManager.class);

    ScheduledExecutorService httpCheckPool = Executors.newScheduledThreadPool(10);

    @Override
    public void start() {
       /**
        * Start some threads
        */
    }

    @Override
    public void stop() {
        httpCheckPool.shutdown();
    }

    @Override
    public boolean isRunning() {
        return !httpCheckPool.isTerminated();
    }

    public synchronized void addServiceToCheck(NewService service){
        /**
         * Add service to the threadpool
         */
    }

任何帮助将不胜感激。

这是为面临类似问题的人准备的。 isRunning()start() 之前被调用因此确保 isRunning() returns false 最初然后只执行 start()。简单的方法是使用标志。