首页 > 解决方案 > 为什么 Spring Boot 会阻塞线程?

问题描述

我试图在 Spring Boot 中创建一个套接字线程。这是 Spring Framework 中的初始启动类。

@Component
public class InitialStartUp implements ApplicationListener<ContextRefreshedEvent> {

    private Logger logger = LoggerFactory.getLogger(getClass());


    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {

        // Start the Socket server
        try {
            ListenerSocket listenerSocket = new ListenerSocket();
            listenerSocket.run();
            logger.info("Starting listener socket server"); // <-- Never called
        } catch (Exception e) {
            logger.info(e.getMessage());
        }

    } 
}

但问题是上面的 logger.info 方法永远不会被调用。为什么?Spring Boot 运行 listenerSocket 线程,但永远不会“退出”它。为什么?

有什么方法可以让 logger.info 被调用吗?

标签: javaspringmultithreadingspring-bootsockets

解决方案


推荐阅读