Java:确保线程永远不会进行上下文切换
在20芯机器上大约150条线程中。我希望某个特定线程永远不会进行上下文切换。我不确定将线程优先级设置为MAX_priority是否可以做到这一点?另外,如果我们将priority设置为max,操作系统是否有必要遵循该指令(假设我在sudo模式下运行) 您不能完全禁用线程上下文切换,但通过将线程优先级设置为Java:确保线程永远不会进行上下文切换,java,linux,multithreading,operating-system,Java,Linux,Multithreading,Operating System,在20芯机器上大约150条线程中。我希望某个特定线程永远不会进行上下文切换。我不确定将线程优先级设置为MAX_priority是否可以做到这一点?另外,如果我们将priority设置为max,操作系统是否有必要遵循该指令(假设我在sudo模式下运行) 您不能完全禁用线程上下文切换,但通过将线程优先级设置为MAX_priority,您告诉操作系统线程调度程序(如果它支持优先级调度策略)抢占优先级较低的线程,如果优先级较高的线程准备运行 工具书类 线程Javadoc 每个线程都有优先级。执行优先级较
MAX_priority
,您告诉操作系统线程调度程序(如果它支持优先级调度策略)抢占优先级较低的线程,如果优先级较高的线程准备运行
工具书类
线程Javadoc
每个线程都有优先级。执行优先级较高的线程
优先于优先级较低的线程
Linux内核线程调度程序API手册页
关于优先权:
从概念上讲,调度器维护一个可运行线程的列表
每个可能的sched_优先级值。为了确定
线程下一步运行时,调度程序将使用
最高静态优先级,并选择此线程头部的线程
名单
关于优先购买权:
所有调度都是抢占式的:如果线程具有更高的静态
优先级已准备好运行,当前运行的线程将
抢占并返回其静态优先级的等待列表
水平
线程优先级设置为最大优先级是否可以执行此操作
这取决于您的操作系统。虽然您设置了它,但无法保证调度程序会像那样工作。通常不可能强制执行此操作 例如,虚拟机可以选择150个线程中的每一个,并在您最喜欢的线程之前运行它们
我最喜欢的一句话: 在JAVA中,当涉及到线程时,保证很少
操作系统线程规范与此无关-Java虚拟机规范与此无关。在Java中,操作系统在线程基础方面不起关键作用