Java 线程优先级和线程精度
线程优先级会提高Java 线程优先级和线程精度,java,multithreading,Java,Multithreading,线程优先级会提高线程睡眠的准确性(50) 正如我们所知,当您调用sleep 50毫秒时,线程是不准确的,但它是否以任何方式提高了准确性?如果线程列为最大优先级 非常感谢您的解释。我无法想象会是这样。但是线程优先级的影响取决于主机操作系统。这与线程精度没有直接关系,但是是的,因为在50毫秒的休眠之后,您已经给出了最大优先级,JVM将选择任何线程以相同的最大优先级进行处理。休眠的精度取决于操作系统。如果你想要更高的精确度,你可以使用另一个操作系统。另一种方法是不睡觉,你可以忙着等。或者你可以睡45毫
线程睡眠的准确性(50)代码>
正如我们所知,当您调用sleep 50毫秒时,线程是不准确的,但它是否以任何方式提高了准确性?如果线程列为最大优先级
非常感谢您的解释。我无法想象会是这样。但是线程优先级的影响取决于主机操作系统。这与线程精度没有直接关系,但是是的,因为在50毫秒的休眠之后,您已经给出了最大优先级,JVM将选择任何线程以相同的最大优先级进行处理。休眠的精度取决于操作系统。如果你想要更高的精确度,你可以使用另一个操作系统。另一种方法是不睡觉,你可以忙着等。或者你可以睡45毫秒,然后忙着等5毫秒
如果您有一个任务需要每秒运行20次,那么最好跟踪下一个任务应该运行的时间,并在该时间运行它(而不是等待固定的时间),因为您在睡眠之间的操作也需要一些时间
顺便说一句,这是为你做的
它可以在两个任务之间以微秒的精度休眠(假设操作系统支持它),但它尽量不漂移。是的,它可能会使它更精确
尽管如此,布莱恩·戈茨:
线程优先级机制是一个迟钝的工具,改变优先级的效果并不总是显而易见的;提高线程的优先级可能不会起任何作用,或者可能总是导致一个线程优先于另一个线程进行调度,从而导致饥饿
抵制调整线程优先级的诱惑通常是明智的。一旦您开始修改优先级,应用程序的行为就会变得特定于平台,并且会带来饥饿的风险。您经常可以通过线程.sleep
或线程的存在,发现一个程序正试图从优先级调整或其他响应问题中恢复。在奇数位置产生调用,试图给低优先级线程更多的时间
因此,如果您真的需要线程,请避免更改线程优先级,并重新考虑您的设计。sleep(50)
要做到这一点