- Thread.setPrioriy()
- Process.setThreadPriority()
请问:
- 两种方式有何区别?更推荐用哪种方式?
- Android 中的线程与操作系统中的线程是如何对应的?通过优先级的设置如何影响到 CPU 的调度?
- 方式 1 有什么问题吗或者说使用注意事项吗?(这道题有点偏,可以选答)
更多问答 >>
-
2021-01-31 16:58
-
每日一问 | 类要先加载、链接、初始化才能实例化,有特殊Case吗?
2021-02-21 20:15 -
每日一问 | 今天还探索一个 View 的方法 hasOverlappingRendering()
2021-02-21 20:16 -
2021-03-18 23:20
-
每日一问 | 在做性能优化的时候,常常看到 Thread(Cpu) Time,Wall clock Time?
2021-03-15 00:43 -
每日一问 | Java 中的 lambda 与 Android 中的 lambda 有什么不同?
2021-01-31 17:20 -
每日一问 | Java中匿名内部类写成 lambda,真的只是语法糖吗?
2021-01-11 00:00 -
每日一问 | RxJava中Observable、Flowable、Single、Maybe 有何区别?
2021-01-03 20:34 -
每日一问 | View invalidate() 相关的一些细节探究~
2020-12-27 22:38 -
每日一问 | Call requires API level 23 (current min is 14) 扫描出来的原理是?
2020-12-27 22:39
知识盲区了。。。
网上找到这几篇文章:
从Java到JVM到OS线程的优先级 Java线程优先级深入jvm理解安卓线程学习四 之 线程优先级和调度了解Java线程优先级Android平台上的进程调度探讨Linux 线程调度与优先级总结一下:
Thread.setPrioriy
和Process.setThreadPriority
有何区别?二者最终都是通过平台提供的setpriority
函数来实现,只是Process.setThreadPriority
在调用setpriority
之前,还会设置调度策略(set_sched_policy
),共有三种: SCHED_OTHER 、SCHED_FIFO、SCHED_RR ;更推荐用哪种方式?
更推荐使用Process.setThreadPriority
,可能是因为Java出于平台兼容性的考虑,把线程优先级范围定义为1 ~ 10,这并不能完全对应每一个平台的各个等级的,比如在Linux(Android)上,1 ~ 10只能对应 -5 ~ 4,但人家实际取值范围是 -20 ~ 19,所以使用Process.setThreadPriority
的话,会更加贴合系统提供的优先级。https://mp.weixin.qq.com/s/oLz_F7zhUN6-b-KaI8CMRw
第一反应 优先级选择 这个东西 会不会是 加权随机算法?
优先级数组
[5,2,3,6,8,1,2,5,6]依次累加
[5,7,10,16,24,25,27,32,38]每次随机一个 [0, 38) 的数, 然后 二分查找 得到 对应的索引下标, 然后分配cpu给对应的线程..
期待群主的自问自答。。知识盲区