java - 如何调度 Java 线程

标签 java multithreading scheduling

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

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

最佳答案

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

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

在 Java 中你唯一能做的就是 set the priority of the thread .但这如何影响调度算法尚未定义。

您可以尝试更改运行 VM 的操作系统的调度算法。但这在很大程度上取决于所使用的操作系统。

关于java - 如何调度 Java 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17827332/

相关文章:

c++ - qt中GUI同时更新和控制

c++ - std::promise 能否知道相应的 std::future 已取消等待?

java 新进程 - 需要从 ErrorStreams 和输出流中获取和读取

java - JUnit 和测试文件

java - Firebase 云消息传递在某些设备上不工作

java - JAXB 解码时出错

C# SQL连接OpenAsync不是异步的

python - Google Or-Tools员工排类。条件无法正常工作

c# - 如何安排 C# Windows 服务每天运行一个方法?

algorithm - 将 n 个可变高度图像拟合到 3(相似长度)列布局中