SpringBoot的异步任务开启

SpringBoot异步任务

创建一个service包

创建一个类AsyncService

先模拟同步等待的情况

@Service
public class AsyncService {

   public void hello(){
       try {
           Thread.sleep(5000);//停止五秒
      } catch (InterruptedException e) {
           e.printStackTrace();
      }
       System.out.println("业务进行中....");
  }
}

编写controller包

编写AsyncController类

我们去写一个Controller测试一下

@RestController
public class AsyncController {

   @Autowired
   AsyncService asyncService;

   @GetMapping("/hello")
   public String hello(){
       asyncService.hello();
       return "hello";
  }

}

访问http://localhost:8080/hello进行测试,3秒后出现hello,这是同步等待的情况。

现在改写为异步----------------------------------------------

给hello方法添加@Async注解;

//告诉Spring这是一个异步方法
@Async
public void hello(){
   try {
       Thread.sleep(3000);
  } catch (InterruptedException e) {
       e.printStackTrace();
  }
   System.out.println("业务进行中....");
}

SpringBoot就会自己开一个线程池,进行调用!但是要让这个注解生效,我们还需要在主程序上添加一个注解@EnableAsync ,开启异步注解功能;

@EnableAsync //开启异步注解功能
@SpringBootApplication
public class SpringbootTaskApplication {

   public static void main(String[] args) {
       SpringApplication.run(SpringbootTaskApplication.class, args);
  }

}

7、重启测试,网页瞬间响应,完成

你可能感兴趣的:(spring,boot)