答案 0 :(得分:3)
最明显的区别是Reactor没有横切@Async
注释方法并隐式地将事件提交给Reactor
。如果您在bean上使用Reactor @Selector
注释,那么您将得到与@Async
相反的结果:事件处理程序,而不是事件出版商
话虽如此,Reactor支持通过DynamicReactorFactory发布@Async
式活动。它使用接口而不是注释,但概念类似。
关于使用其中一个的“优点”:它实际上取决于您在应用程序中执行的其他操作以及您是否在更广泛的意义上使用Reactor。 Reactor不是为线程池替换而设计的。 Reactor中的ThreadPoolExecutorDispatcher
只使用下面的普通ThreadPoolExecutor
。在该场景中使用Reactor的优势来自Reactor中使用的优化事件发布,而不是始终创建新的Callables
和Runnables
,以及使用Reactor的Stream
和{{1}用于处理异步执行的API。
从API的角度来看,使用Reactor而不是普通的Promise
进行后台工作有一个明显且可衡量的优势。