RxJava2用Observable.fromIterable时可以设置线程调度吗?

aplixy 2018-02-04 06:26:07
我用Observable.fromIterable遍例一个集合时,担心集合太大比较耗时,所以用了以下代码:

Observable.fromIterable(xxxList)
.Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(...);


目的是把集合的遍例放在工作线程中(因为集合将来有可能会变得很大,直接在UI线程遍例有可能会引起界面卡顿),这样做有没有用?如果有用的话会不会导致工作线程和UI线程频繁切换引起性能损耗?会不会创建很多个工作线程?
...全文
1396 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jing丶無雙 2018-02-09
  • 打赏
  • 举报
回复
我未曾使用过RxJava2,这个还得你自己琢磨
Jing丶無雙 2018-02-08
  • 打赏
  • 举报
回复
如果你能确保你的.Schedulers.newThread()所开启的线程不是类似while条件一类的死循环等待类的线程,那这个线程在处理完相应的逻辑后,它会关闭。虽然这会创建很多个工作线程,但是处理完以后它都会关闭,你只要不让它在同一时刻创建多个线程,性能损耗就不会太严重,属于正常范畴。另外建议死循环等待类线程尽可能的少开启,最好把相应逻辑处理在同一线程
aplixy 2018-02-08
  • 打赏
  • 举报
回复
引用 1 楼 xj396282771 的回复:
如果你能确保你的.Schedulers.newThread()所开启的线程不是类似while条件一类的死循环等待类的线程,那这个线程在处理完相应的逻辑后,它会关闭。虽然这会创建很多个工作线程,但是处理完以后它都会关闭,你只要不让它在同一时刻创建多个线程,性能损耗就不会太严重,属于正常范畴。另外建议死循环等待类线程尽可能的少开启,最好把相应逻辑处理在同一线程
单从我这个例子中看呢?这个很显然不是死循环嘛,之前好像听说过RxJava的线程底层使用的是线程池,如果是线程池不是能重复使用吗?为什么还会创建许多呢?但是我没看过from表在式的源码,不知道具体是不是这样,但即使是使用线程池,在工作线程和UI线程来回切换是不是也还是会损耗性能?没看过RxJava的源码实在是不太好搞,但是这个东西也不是一时半会儿能搞的明白的,所以看看有没有人这么用过

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧