当前位置: 首页 > 知识库问答 >
问题:

带过滤器链接的ParallelStream

阚亮
2023-03-14

如果我使用parallelStream()而不是stream(),链接是否会改变结果?

我尝试了几千条记录,结果在几次迭代中都是一致的。但由于这涉及到线程(我找不到足够的相关材料来讨论这种组合),我想双重确保并行流不会以任何方式影响过滤器链接的输出。示例代码:

List<Element> list = myList.parallelStream()
      .filter(element -> element.getId() > 10)
      .filter(element -> element.getName().contains("something"))
      .collect(Collectors.toList());

共有1个答案

秋光熙
2023-03-14

简短的回答:没有。

所记录的过滤操作期望对每个元素应用一个无干扰和无状态谓词,以确定是否应将其作为新流的一部分。

你应该考虑的几个方面是-

  1. 除了并发集合(您在现有代码中选择什么作为myList)-

对于大多数数据源,防止干扰意味着确保数据源在流管道执行期间根本不被修改。

还要注意,试图从行为参数访问可变状态会给您带来安全和性能方面的错误选择;

此外,仔细想想,您的过滤器操作中有什么会受到多个线程的影响。给定当前代码,在功能上什么都没有,只要两个操作都执行,无论执行它们的线程是什么,都会得到一致的结果。

 类似资料:
  • 主要内容:FilterChain 接口,Filter 链的拦截过程,Filter 链中 Filter 的执行顺序,示例在 Web 应用中,可以部署多个 Filter,若这些 Filter 都拦截同一目标资源,则它们就组成了一个 Filter 链(也称过滤器链)。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递,直到传递给目标资源。 FilterChain 接口 javax.servlet 包中提供了一个 FilterChain 接口,该接口由容器实现。容器将其实例对象

  • 问题内容: 我正在使用Django的内置用户模型,并且具有一个自定义Foo对象,并带有一个用户外键。我正在寻找选择所有User对象和所有符合某些约束的Foo对象,例如: 我应该如何在Django中完成这项工作?到目前为止,我已经尝试过: 但这会生成类似于以下内容的SQL: 并且仅返回具有符合条件的Foo对象的User对象。或者,我可以选择所有User对象并为每个对象运行一个查询,但是效率会大大降低

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 当我调用我的服务时,我的这个URL: 我有这个堆栈跟踪: 什么是平均健康有一个空的筛选器列表?

  • 问题内容: 我的过滤器很少 在我的项目中,要获得良好的结果,我必须在控制器中进行此过滤,而不是在视图中 我知道基本的语法,但我不知道如何在控制器中制作过滤器链,因此一切都将如模板中的示例一样工作。 我找到了一些解决方案,现在仅使用一个过滤器,但是应该可以用于许多;) 我在ng-repeat中使用此功能可以正常工作,但是我必须使用少量过滤器进行检查。 问题答案: 您只需重新过滤您从第一个过滤器返回的

  • null 这段代码似乎工作正常,并允许我处理admin guild命令,即由“权限级别”(最高角色级别)至少是我指定的一个的成员在我的Discord服务器的文本通道中发送的命令。 但是如何正确地(反应性地、好地)实现其余的命令呢?我在Reactor中没有找到类似if/else链接的东西,我也不想重复以上代码几次,只更改1-2行。