在springboot应用程序中启动线程

我想在Spring Boot开始后执行一个Java类(其中包含我要执行的Java线程)。我的初始代码:

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

这是我想在开始时执行的代码:

public class SimularProfesor implements Runnable{

// Class atributes

// Constructor

public SimularProfesor() {

//Initialization of atributes

}

@Override

public void run() {

while(true) {

// Do something

}

}

}

我怎么称呼这个线程?这是我应该做的:

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

// Call thread (constructor must be executed too)

}

}

回答:

不要自己弄乱线程。Spring(还有普通的Java)对此有一个很好的抽象。

首先TaskExecutor在您的配置中创建该类型的Bean

@Bean

public TaskExecutor taskExecutor() {

return new SimpleAsyncTaskExecutor(); // Or use another one of your liking

}

然后创建一个CommandLineRunner(尽管ApplicationListener<ContextRefreshedEvent>也可以)计划您的任务。

@Bean

public CommandLineRunner schedulingRunner(TaskExecutor executor) {

return new CommandLineRunner() {

public void run(String... args) throws Exception {

executor.execute(new SimularProfesor());

}

}

}

当然,您也可以在Spring之前安排自己的课程。

这样做的好处是,Spring还将为您清理线程,而您不必自己考虑。我在CommandLineRunner这里使用了a

,因为它将在所有bean都初始化之后执行。

以上是 在springboot应用程序中启动线程 的全部内容, 来源链接: utcz.com/qa/435918.html

回到顶部