- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前使用 rxjava ver 1.2.4 和 rxandroid 1.2.1。我有一个关于 .subscribeOn(Schedulers.io())
的问题,我从 javadoc 中读到的是:
“该实现由一个 Executor 线程池提供支持,该线程池将根据需要增长。”
从日志中可以看出,每次执行某些任务时,线程数都会不断增加:
12-28 11:17:03.879 D/HistoryDatabaseHelper: RxIoScheduler-22
12-28 11:17:03.918 D/HistoryDatabaseHelper: RxIoScheduler-19
12-28 11:17:03.918 D/HistoryDatabaseHelper: RxIoScheduler-18
RxIoScheduler-1
,不是吗?RxIoScheduler-1
)在完成其工作后会被清除? 我担心应用很快会出现 OOM 或在执行一些繁重的任务时由于打开线程的数量而以某种方式遇到 OOM。
最佳答案
io() Scheduler 托管一个单线程 ScheduledExecutorServices 池,当您使用 observeOn、subscribeOn 和其他采用 Scheduler 的运算符时,这些服务将作为 worker 分发。在关联的序列终止或取消订阅之前,支持 worker 的线程一直处于 Activity 状态。
如果您有多个 Activity 序列,您将获得多个 IO 调度程序线程。一旦完成,它们就会回到池中,准备好被另一个序列重用。但是,还有一个默认的 1 分钟超时,如果线程未被重用,它会停止线程。如果运算符(operator)随后再次从 IO 调度程序中需要一个工作人员,则会启动一个新线程,该线程会在其名称中获取一个新值,因此如果应用程序运行时间足够长,您可能会得到 19、2002 等。
如果您的序列没有终止并且只是不断堆积,最终耗尽操作系统线程,您可能会遇到 OOM。
关于java - RxIoScheduler 线程数不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355066/
目前使用 rxjava ver 1.2.4 和 rxandroid 1.2.1。我有一个关于 .subscribeOn(Schedulers.io()) 的问题,我从 javadoc 中读到的是: “
我是一名优秀的程序员,十分优秀!