Spring Web Flux 和Spring Async 方法有什么区别?
Spring Web Flux and Spring Async method what is the difference?
我是 Spring 响应式编程和 Spring 异步方法的新手。我有个疑问。
通过使用 spring webflux,我们可以进行响应式编程,这样我们就可以执行一段特定的代码,而我们当前的线程不需要等待它完成执行。
类似地,通过使用 @async 方法,我们可以在不同的线程中制作特定的代码 运行,这样我们当前的线程就不会等待。
那么在这些情况下,webflux 和 async 方法有何不同以及何时使用哪个?
它们是粉笔和奶酪 - 它们差异很大,无法直接进行比较。
@Async
注解只是在单独的线程中执行注解的方法,并且在返回之前不会阻塞该线程(不等待它完成。)异步的正常用例是对于即发即弃(或即发即读)场景,对于长 运行 任务,在传统的阻塞环境中。
另一方面,Webflux 完全摒弃了传统的阻塞线程模型,取而代之的是通过只有少数几个永远不会阻塞的线程的事件循环来为每个请求提供服务。要做到这一点,需要一种与传统阻塞应用程序完全不同的代码编写风格。它不仅用于即发即弃的场景,它还成为处理进入应用程序的 每个 请求的默认方式。
你的问题几乎提到了区别,你说 in a different thread
混淆的原因:Webfux 和@Async 都运行 与被调用的线程异步。
现在让我们进一步深入......
Weblux,它 运行 是异步的,但不是因为生成了新线程。
它是围绕发布者-订阅者模式(观察者模式)构建的,这为它提供了异步特性。
我是 Spring 响应式编程和 Spring 异步方法的新手。我有个疑问。 通过使用 spring webflux,我们可以进行响应式编程,这样我们就可以执行一段特定的代码,而我们当前的线程不需要等待它完成执行。 类似地,通过使用 @async 方法,我们可以在不同的线程中制作特定的代码 运行,这样我们当前的线程就不会等待。
那么在这些情况下,webflux 和 async 方法有何不同以及何时使用哪个?
它们是粉笔和奶酪 - 它们差异很大,无法直接进行比较。
@Async
注解只是在单独的线程中执行注解的方法,并且在返回之前不会阻塞该线程(不等待它完成。)异步的正常用例是对于即发即弃(或即发即读)场景,对于长 运行 任务,在传统的阻塞环境中。
另一方面,Webflux 完全摒弃了传统的阻塞线程模型,取而代之的是通过只有少数几个永远不会阻塞的线程的事件循环来为每个请求提供服务。要做到这一点,需要一种与传统阻塞应用程序完全不同的代码编写风格。它不仅用于即发即弃的场景,它还成为处理进入应用程序的 每个 请求的默认方式。
你的问题几乎提到了区别,你说 in a different thread
混淆的原因:Webfux 和@Async 都运行 与被调用的线程异步。
现在让我们进一步深入......
Weblux,它 运行 是异步的,但不是因为生成了新线程。
它是围绕发布者-订阅者模式(观察者模式)构建的,这为它提供了异步特性。