Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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_Multithreading - Fatal编程技术网

Java 线程优先级和线程精度

Java 线程优先级和线程精度,java,multithreading,Java,Multithreading,线程优先级会提高线程睡眠的准确性(50) 正如我们所知,当您调用sleep 50毫秒时,线程是不准确的,但它是否以任何方式提高了准确性?如果线程列为最大优先级 非常感谢您的解释。我无法想象会是这样。但是线程优先级的影响取决于主机操作系统。这与线程精度没有直接关系,但是是的,因为在50毫秒的休眠之后,您已经给出了最大优先级,JVM将选择任何线程以相同的最大优先级进行处理。休眠的精度取决于操作系统。如果你想要更高的精确度,你可以使用另一个操作系统。另一种方法是不睡觉,你可以忙着等。或者你可以睡45毫

线程优先级会提高
线程睡眠的准确性(50)

正如我们所知,当您调用sleep 50毫秒时,线程是不准确的,但它是否以任何方式提高了准确性?如果线程列为
最大优先级


非常感谢您的解释。

我无法想象会是这样。但是线程优先级的影响取决于主机操作系统。

这与线程精度没有直接关系,但是是的,因为在50毫秒的休眠之后,您已经给出了最大优先级,JVM将选择任何线程以相同的最大优先级进行处理。

休眠的精度取决于操作系统。如果你想要更高的精确度,你可以使用另一个操作系统。另一种方法是不睡觉,你可以忙着等。或者你可以睡45毫秒,然后忙着等5毫秒

如果您有一个任务需要每秒运行20次,那么最好跟踪下一个任务应该运行的时间,并在该时间运行它(而不是等待固定的时间),因为您在睡眠之间的操作也需要一些时间

顺便说一句,这是为你做的

它可以在两个任务之间以微秒的精度休眠(假设操作系统支持它),但它尽量不漂移。

是的,它可能会使它更精确

尽管如此,布莱恩·戈茨:

线程优先级机制是一个迟钝的工具,改变优先级的效果并不总是显而易见的;提高线程的优先级可能不会起任何作用,或者可能总是导致一个线程优先于另一个线程进行调度,从而导致饥饿

抵制调整线程优先级的诱惑通常是明智的。一旦您开始修改优先级,应用程序的行为就会变得特定于平台,并且会带来饥饿的风险。您经常可以通过
线程.sleep
线程的存在,发现一个程序正试图从优先级调整或其他响应问题中恢复。在奇数位置产生
调用,试图给低优先级线程更多的时间

因此,如果您真的需要
线程,请避免更改线程优先级,并重新考虑您的设计。sleep(50)
要做到这一点