Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:确保线程永远不会进行上下文切换_Java_Linux_Multithreading_Operating System - Fatal编程技术网

Java:确保线程永远不会进行上下文切换

Java:确保线程永远不会进行上下文切换,java,linux,multithreading,operating-system,Java,Linux,Multithreading,Operating System,在20芯机器上大约150条线程中。我希望某个特定线程永远不会进行上下文切换。我不确定将线程优先级设置为MAX_priority是否可以做到这一点?另外,如果我们将priority设置为max,操作系统是否有必要遵循该指令(假设我在sudo模式下运行) 您不能完全禁用线程上下文切换,但通过将线程优先级设置为MAX_priority,您告诉操作系统线程调度程序(如果它支持优先级调度策略)抢占优先级较低的线程,如果优先级较高的线程准备运行 工具书类 线程Javadoc 每个线程都有优先级。执行优先级较

在20芯机器上大约150条线程中。我希望某个特定线程永远不会进行上下文切换。我不确定将线程优先级设置为MAX_priority是否可以做到这一点?另外,如果我们将priority设置为max,操作系统是否有必要遵循该指令(假设我在sudo模式下运行)

您不能完全禁用线程上下文切换,但通过将线程优先级设置为
MAX_priority
,您告诉操作系统线程调度程序(如果它支持优先级调度策略)抢占优先级较低的线程,如果优先级较高的线程准备运行

工具书类 线程Javadoc

每个线程都有优先级。执行优先级较高的线程 优先于优先级较低的线程

Linux内核线程调度程序API手册页

关于优先权:

从概念上讲,调度器维护一个可运行线程的列表 每个可能的sched_优先级值。为了确定 线程下一步运行时,调度程序将使用 最高静态优先级,并选择此线程头部的线程 名单

关于优先购买权:

所有调度都是抢占式的:如果线程具有更高的静态 优先级已准备好运行,当前运行的线程将 抢占并返回其静态优先级的等待列表 水平


线程优先级设置为最大优先级是否可以执行此操作


这取决于您的操作系统。虽然您设置了它,但无法保证调度程序会像那样工作。

通常不可能强制执行此操作

例如,虚拟机可以选择150个线程中的每一个,并在您最喜欢的线程之前运行它们


我最喜欢的一句话:

在JAVA中,当涉及到线程时,保证很少


操作系统线程规范与此无关-Java虚拟机规范与此无关。在Java中,操作系统在线程基础方面不起关键作用