怎么在Springboot启动的时候就启动一个永不停止的线程
在Spring Boot应用启动时启动一个永不停止的线程,可以通过实现CommandLineRunner
接口或使用@PostConstruct
注解的方法来完成。以下是使用CommandLineRunner
接口的示例代码:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public CommandLineRunner runnable() {
return args -> {
Thread thread = new Thread(() -> {
while (true) {
// 这里放入线程要执行的代码
System.out.println("线程正在运行...");
try {
// 每隔一定时间执行一次,例如10秒
Thread.sleep(10000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
thread.setDaemon(false); // 设置为非守护线程
thread.start();
};
}
}
在这个例子中,runnable
方法返回了一个CommandLineRunner
的实现,在Spring Boot应用启动完成后,会执行这个Runnable
中的内容,从而启动了一个永远运行的线程。这个线程会每10秒钟打印一条消息到控制台。通过设置thread.setDaemon(false);
,确保这个线程不会在所有非守护线程都结束后自动退出。
评论已关闭