Метод Spring SmartLifecycle start() не выполнен [решено]

#java #spring #threadpoolexecutor

Вопрос:

В моем приложении spring у меня есть менеджер пула потоков, который во время запуска() создает несколько потоков и добавляет их в пул. Но при запуске метод 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  */  }  

Любая помощь будет очень признательна.

Комментарии:

1. Решен ли этот вопрос ? Если да, пожалуйста, отметьте это как решенное с помощью специальной кнопки и объясните свое решение 🙂

Ответ №1:

Это для тех, кто сталкивается с подобной проблемой. isRunning() вызывается раньше start() , поэтому убедитесь isRunning() false , что сначала возвращается, а затем только start() выполняется. Простой способ сделать это-использовать флаг.