微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 8 lambda api

我正在努力从Rx Java迁移到 Java 8 lambdas.我找不到的一个例子是缓冲请求的方法.例如,在Rx Java中,我可以说如下.
Observable.create(getIterator()).buffer(20,1000,TimeUnit. MILLISECONDS).doOnNext(list -> doWrite(list));

我们将20个元素缓冲到一个列表中,或者以1000毫秒的时间超时,这首先发生.

RX中的可观测值是可观察的“推”样式,其中Streams使用java拉.这是否可能在流中实现我自己的地图操作,或者由于doOnNext必须轮询上一个元素,否则无法发出导致问题的原因?

解决方法

一种方法是使用BlockingQueue和Guava.使用Queues.drain,您可以创建一个集合,然后调用stream()并进行转换.这里有一个链接Guava Queues.drain

这里有一个简单的例子:

public void transform(BlockingQueue<Something> input) 
{
    List<Something> buffer = new ArrayList<>(20);
    Queues.drain(input,buffer,20,TimeUnit.MILLISECONDS);
    doWrite(buffer);
}

原文地址:https://www.jb51.cc/java/123009.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐