springboot启动时候开启异步线程或者启动方法
一、准备工作
在Application类上加上EnableAsync注解开启异步
在被调用的方法上面加上@Async,也可以直接在类上加此注解,会标识所有方法为异步方法
*注意事项*
-
必须要加@EnableAsync注解
-
不能在同一类下调用@Async注解的方法,比如A类下有a和b方法,b方法有@Async注解,不能直接这样a调用b,要把b放到其他类中
-
@Async也可以打在类上,这样类下面的所有方法都是异步的(被其他类调用的时候)
二、另一种注解
要实现在启动时加载此异步方法,加@PostConstruct注解即可
@Component
public class DataProcessController implements Runnable{
@Value("${params}")
private String params;
@Autowired
private MongoTemplate mongoTemplate;
@PostConstruct
public void init(){
//启动线程实例
new Thread(this).start();
}
@Override
public void run() {
synchronized(this){
while (true){
try {
if(linkedBlockingQueue.isEmpty()){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
executeTask();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public void executeTask(){
//具体业务
}}