非同步任務-springboot 非同步:非同步與同步相對,當一個非同步過程調用發出後,調用者在沒有得到結果之前,就可以繼續執行後續操作。也就是說無論非同步方法執行代碼需要多長時間,跟主線程沒有任何影響,主線程可以繼續向下執行。 實例: 在service中寫一個hello方法,讓它延遲三秒 @Service ...
非同步任務-springboot
- 非同步:非同步與同步相對,當一個非同步過程調用發出後,調用者在沒有得到結果之前,就可以繼續執行後續操作。也就是說無論非同步方法執行代碼需要多長時間,跟主線程沒有任何影響,主線程可以繼續向下執行。
實例:
在service中寫一個hello方法,讓它延遲三秒
@Service
public class AsyncService {
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("數據正在處理!");
}
}
讓Controller去調用這個業務
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@GetMapping("/hello")
public String hello(){
asyncService.hello();
return "ok";
}
}
啟動SpringBoot項目,我們會發現三秒後才會響應ok。
所以我們要用非同步任務去解決這個問題,很簡單就是加一個註解。
- 在hello方法上@Async註解
@Service
public class AsyncService {
//非同步任務
@Async
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("數據正在處理!");
}
}
- 在SpringBoot啟動類上開啟非同步註解的功能
@SpringBootApplication
//開啟了非同步註解的功能
@EnableAsync
public class Sprintboot09TestApplication {
public static void main(String[] args) {
SpringApplication.run(Sprintboot09TestApplication.class, args);
}
}
問題解決,服務端瞬間就會響應給前端數據!
樹越是嚮往高處的光亮,它的根就越要向下,向泥土向黑暗的深處。