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

为什么永远达不到收集方法中的这个Bi消费者组合器代码?[复制]

江佐
2023-03-14

在主要方法中,我列出了不同年龄的人。现在,当我使用collect方法将此列表转换为一个人员年龄列表时。双消费组合器函数中的代码永远达不到。

class Person {
    private int age;

    public int getAge() {
        return age;
    }
}

//收藏的第二味道

ArrayList<Integer> pAges = people.stream()
                            .collect(ArrayList<Integer>::new, 
                                    (listGivenBySupplier, personObjectFromPeopleStream) -> listGivenBySupplier.add(personObjectFromPeopleStream.getAge()), 
                                    (r1, r2) -> {  //Also please explain what value is passed to r1 and r2
                                            System.out.println("r1: " + r1);
                                            System.out.println("r2: " + r2);
                                            r1.add(2222);
                                            r2.add(2211); 
                            });
System.out.println("pAges:" + pAges);

共有1个答案

李胤
2023-03-14

仅当并行调用流处理管道时,才会调用合并器函数。因此,将其更改为并行流,然后它应该达到合并器功能。所以这应该会触发它。

people.parallelStream()...

对于一个实例,假设有2个工作线程处理此工作负载。任何并行执行都涉及将源拆分为多个部分,共同执行它们,最后将部分结果合并到一个结果容器中。每个线程T1和T2都有一个关联的List,这样容器就被线程限制了。累加器函数将每个单个元素添加到关联的容器中。完成线程T1和T2后,部分容器应该合并到一个大的结果容器中。这就是组合器函数发挥作用的地方。在串行执行中,不涉及这样的结果合并,因此组合器在那里没有用。

 类似资料:
  • 我正在尝试插入: 在: 但我不工作... 我试过: 为什么??

  • 我有一个SOAP Web服务,它发送一个kafka请求消息,并等待一个kafka响应消息(例如,consumer.poll(10000))。 每次调用web服务时,它都会创建一个新的Kafka生产者和一个新的Kafka消费者。 每次调用web服务时,使用者都会收到相同的消息(例如,具有相同偏移量的消息)。 我使用的是Kafka0.9,启用了自动提交,并且自动提交频率为100毫秒。 更新0001

  • 本文向大家介绍消费者和消费者组有什么关系?相关面试题,主要包含被问及消费者和消费者组有什么关系?时的应答技巧和注意事项,需要的朋友参考一下 每个消费者从属于消费组。具体关系如下:

  • 本文向大家介绍什么是kafka消费者组?相关面试题,主要包含被问及什么是kafka消费者组?时的应答技巧和注意事项,需要的朋友参考一下 答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。

  • 我看不出我做错了什么。如有任何帮助,不胜感激。

  • 在Apache Kafka 0.8.2 office文档的第5.6节“分销、消费者和消费者群体”小节中,它说 组中的使用者尽可能公平地划分分区,每个分区仅由一个消费组中的一个使用者使用。 但是我发现,在实践中,一个消费者组中的多个消费者可以通过从同一主题分区发送 FetchRequest 来使用单个分区中的数据。 在接下来的消费者身份证登记处小节中 除了由一个组中的所有使用者共享的group_id