PHc*_*Der 5 java linux multithreading operating-system
比如说 20 核机器上大约有 150 个线程。我希望特定线程永远不会进行上下文切换。我不确定将线程优先级设置为 MAX_PRIORITY 是否会执行此操作?另外,如果我们将优先级设置为 max,操作系统是否有必要遵循指令(假设我在 sudo 模式下运行)?
您不能完全禁用线程上下文切换,而是通过将线程优先级设置为MAX_PRIORITY
您可以告诉操作系统线程调度程序(如果它支持优先级调度策略)在较高优先级线程准备好运行时抢占较低优先级线程。
java.lang.Thread Javadoc
每个线程都有一个优先级。具有较高优先级的线程优先于具有较低优先级的线程执行。
https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
Linux 内核线程调度程序 API 手册页
关于优先级:
从概念上讲,调度程序为每个可能的 sched_priority 值维护一个可运行线程列表。为了确定接下来运行哪个线程,调度程序会查找具有最高静态优先级的非空列表,并选择位于该列表头部的线程。
关于抢占:
所有调度都是抢占式的:如果具有较高静态优先级的线程准备好运行,则当前正在运行的线程将被抢占并返回到其静态优先级的等待列表。
http://man7.org/linux/man-pages/man7/sched.7.html