我有一个包含大量数据的列表,我想对每个项目进行一些计算/逻辑。
它调用了一个spring Service方法来执行逻辑。我有点困惑,哪种方式才是使用异步最快的正确方法。
现在我只是通过parrallelStream调用这个方法,如下所示
items.getItems().parallelStream().forEach(item -> addItem(item));但我仍然看到了性能问题,它不是完全异步/快速的,我认为这是由于方法不是异步的,因为只有一个bean 1方法处理所有的事情。
我想知道在方法中添加异步是否会提高性能。或者这是正确的方法。如果我将异步添加到方法中,我是否应该仅用streams替换parrallelStreams?
或者有没有更好的方法来提高性能。
编辑
为了更清楚地说明这个问题,一个用户使用一个大列表调用一个端点,而我想对这些项执行一个业务逻辑,并返回更新后的列表。
发布于 2021-07-14 12:29:19
通常,您应该更喜欢使用Spring特性来进行与java特性的异步计算。
如果列表很大,不要忘记http调用超时,通常是30秒。
如果计算花费的时间更长,REST API应该接受列表,创建一个任务,并在单独的线程中检索http status 203_ACCEPTED和do task。
https://stackoverflow.com/questions/68372018
复制相似问题