在我的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
*/
}任何帮助都将不胜感激。
发布于 2021-11-01 06:38:35
这是为那些面临类似问题的人准备的。isRunning()在start()之前被调用,因此确保isRunning()最初返回false,然后只执行start()。执行此操作的简单方法是使用标志。
https://stackoverflow.com/questions/69793002
复制相似问题