面试题答案
一键面试线程优先级设置的作用
线程优先级设置用于提示调度器在分配 CPU 时间时,优先考虑高优先级的线程。但需要注意的是,优先级只是一个建议,不能保证高优先级线程一定会比低优先级线程先执行或执行时间更长,因为最终的调度结果还取决于操作系统的线程调度算法。
线程优先级的取值范围
在 Java 中,线程优先级的取值范围是 1 到 10 。其中 Thread.MIN_PRIORITY
表示最低优先级,值为 1 ;Thread.MAX_PRIORITY
表示最高优先级,值为 10 ;Thread.NORM_PRIORITY
表示普通优先级,值为 5 。
不同优先级线程在实际运行中的表现差异
- 理论上:高优先级线程在竞争 CPU 资源时会比低优先级线程更有优势,调度器会倾向于分配更多的 CPU 时间给高优先级线程。
- 实际上:在不同的操作系统和 JVM 实现下,表现会有所不同。在某些操作系统中,优先级的影响可能较为明显,高优先级线程确实能得到更多执行机会;而在另一些操作系统中,优先级可能几乎不起作用,线程的执行顺序仍然具有很大的随机性。例如在一些分时操作系统中,会更注重公平性,即使优先级不同,每个线程也能在一定时间内获得 CPU 执行权,优先级的差异体现得并不显著。