如何安排Java线程

Ani*_*kur 6 java multithreading scheduling

我已经读过Java线程是用户级线程,用户级线程和内核级线程之间的区别之一是内核级别线程由内核调度(我们无法更改),对于用户级线程,我们可以定义我们的线程自己的调度算法.

那么我们如何在Java中安排线程?在任何给定时间,当准备好执行多个线程时,运行时系统选择Runnable具有最高优先级的线程来执行.如果两个具有相同优先级的线程正在等待CPU,则调度程序选择其中一个以循环方式运行.如果我不想要RR怎么办?有没有办法可以改变它,或者我在这里遗漏了什么?

Uwe*_*nus 8

您不能像JVM那样更改调度算法,这超出了范围.JVM使用底层操作系统提供的用户线程的线程.

因此,从Java的角度来看,您无法更改调度算法.调度是自动完成的.

Java中唯一能做的就是设置线程的优先级.但是这没有定义如何影响调度算法.

您可以尝试更改运行VM的操作系统的调度算法.但这高度依赖于所使用的操作系统.