关于概念,这里不多做介绍,原理之前写过,也不多说了。
关于Servlet
servlet分为同步和异步两种。
同步servlet是我们常见的,当请求进来后,tomcat分给每个请求一个线程进行处理,业务代码需要多长时间,这个线程也就需要等待多长时间,多了也就会阻塞了。
异步servlet不会阻塞tomcat的servlet线程,把耗时的操作放到独立的线程池中。这样就可以使用比较少的线程达到比较高的吞吐量。
WebFlux
webflux有两种实现方式,传统mvc和router functions。
看代码
@RestController
public class TestController {
@GetMapping("/1")
private String get1(){
return "haozi";
}
@GetMapping("/2")
private Mono<String> get2(){
return Mono.just("haozi");
}
}
第一种是传统mvc,第二种是flux,运行结果上前端看不出什么区别。
需要注意的是Mono表示0或者1个元素,Flux表示0到n个元素(相当于序列)。
修改下代码
@RestController
@Slf4j
public class TestController {
@GetMapping("/1")
private Stri