【问题标题】:Spring SmartLifecycle start() method not executedSpring SmartLifecycle start() 方法未执行
【发布时间】:2021-11-01 05:39:00
【问题描述】:

在我的 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
         */
    }

任何帮助将不胜感激。

【问题讨论】:

  • 这个问题解决了吗?如果是,请使用专用按钮将其标记为已解决并解释您的解决方案:)

标签: java spring threadpoolexecutor


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2011-09-20
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多