线程优先级是否会提高Thread.sleep(50);
的准确性呢?
我们知道,当您调用sleep 50ms时,线程并不准确,但是它是否会以任何方式提高准确性呢?如果线程被列为MAX_PRIORITY
。
非常感谢任何形式的解释。
线程优先级是否会提高Thread.sleep(50);
的准确性呢?
我们知道,当您调用sleep 50ms时,线程并不准确,但是它是否会以任何方式提高准确性呢?如果线程被列为MAX_PRIORITY
。
非常感谢任何形式的解释。
我无法想象这会是真的。但是线程优先级的影响取决于主机操作系统。
这与线程精确度没有直接关系,但是当您在休眠50毫秒后给予了最高优先级(MAX priority),JVM将选择任何一个具有相同最高优先级的线程来处理。
是的,这样做可能会使它更准确。
然而,来自Brian Goetz的《Java并发实践》:
线程优先级机制是一种粗糙的工具,改变优先级的影响并不总是明显的;提高线程的优先级可能没有任何作用,或者可能总是导致一个线程被优先调度,从而导致饥饿。
通常最好抵制调整线程优先级的诱惑。一旦开始修改优先级,您的应用程序的行为就变得特定于平台,并引入了饥饿的风险。您经常可以通过在奇怪的地方出现
Thread.sleep
或Thread.yield
调用来发现试图从优先级调整或其他响应性问题中恢复的程序,以尝试给低优先级线程更多时间。
因此,避免改变线程优先级,如果您真的需要您的Thread.sleep(50)
如此准确,请重新考虑您的设计!