java rxjava zip

阅读: 评论:0

java rxjava zip

java rxjava zip

我有一个模拟长时间运行的睡眠方法。

private void sleep() {

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

然后我有一个方法返回一个Observable,其中包含参数中给出的2个字符串的列表。它在返回字符串之前调用sleep。

private Observable> getStrings(final String str1, final String str2) {

return Observable.fromCallable(new Callable>() {

@Override

public List call() {

sleep();

List strings = new ArrayList<>();

strings.add(str1);

strings.add(str2);

return strings;

}

});

}

然后,我在Observalb.zip中三次调用getStrings,我希望这三个调用可以并行运行,所以执行的总时间应该在 2秒

以内,也许最多是3秒,因为睡眠只有2秒。但是,总共需要 六 秒钟。 我如何使它并行运行,以便在2秒内完成?

Observable

.zip(getStrings("One", "Two"), getStrings("Three", "Four"), getStrings("Five", "Six"), mergeStringLists())

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Observer>() {

@Override

public void onCompleted() {

}

@Override

public void onError(Throwable e) {

}

@Override

public void onNext(List strings) {

//Display the strings

}

});

mergeStringLists方法

private Func3, List, List, List> mergeStringLists() {

return new Func3, List, List, List>() {

@Override

public List call(List strings, List strings2, List strings3) {

Log.d(TAG, "...");

for (String s : strings2) {

strings.add(s);

}

for (String s : strings3) {

strings.add(s);

}

return strings;

}

};

}

本文发布于:2024-02-04 08:41:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170703338254048.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:java   rxjava   zip
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23