多线程 – 计算上昂贵的映射的并行执行
发布时间:2020-12-15 04:31:01 所属栏目:Java 来源:网络整理
导读:我是ReactiveX库的新手(我使用它的 scala变体,Rx Scala). 我有一个Observable以高速率发出值.我想将一个函数应用于Observable的所有值(map).我在地图中使用的函数在计算上相当昂贵. 有没有办法让线程池并行计算地图阶段? 解决方法 是的,有办法做到这一点.
我是ReactiveX库的新手(我使用它的
scala变体,Rx
Scala).
我有一个Observable以高速率发出值.我想将一个函数应用于Observable的所有值(map).我在地图中使用的函数在计算上相当昂贵. 有没有办法让线程池并行计算地图阶段? 解决方法
是的,有办法做到这一点.
我会将流缓冲到块中,并使用Schedulers.computation()(使用基于大小等于可用处理器数量的线程池的Executor)将负载分布到cpus: int chunkSize = 1000; source .buffer(chunkSize) .flatMap( list -> Observable .from(list) .map(expensive) .subscribeOn(Schedulers.computation())) ... 如果映射操作足够昂贵,那么在没有缓冲区的情况下,您的性??能可能同样出色: source .flatMap( x -> Observable .just(x) .map(expensive) .subscribeOn(Schedulers.computation())) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 将对象强制转换为byteArray
- java – Spring MVC将一个值列表从JSP页面传递给控制器
- 使用Java进行小数据集的数据查找方法?
- java – 如何在特定位置的ArrayList中插入对象
- java – Spring Data Mongo似乎忽略了XML配置中的主机
- java – Android Google Maps V2 – Sd卡作为Tile Provider
- Java / Android:从图形Api获取Facebook用户信息,在TextVie
- java中的list时间排序
- 浅谈Java代理(jdk静态代理、动态代理和cglib动态代理)
- 什么是session?什么是cookie?session和cookie有什么区别?