gpt4 book ai didi

java - 随着线程速度的增加而失去准确性

转载 作者:行者123 更新时间:2023-11-29 06:38:09 25 4
gpt4 key购买 nike

所以我有这个简单的线程,每秒用新的时差更新我的 TextBox。

try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}

editTextBox.setText(""+timeDifference);

但我希望 TextBox 更新得更快,同时保持相同的值。所以我的想法是将 sleep 值减少到现在的 1/4 (250),并且为了保持我的输出不变,我也会将输出减少 1/4,结果是:

try {
Thread.sleep(250);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}

editTextBox.setText(""+timeDifference/4);

然而,第二个示例的输出落后了大约 10%。为什么是这样?我的进程的计算时间是否超过 250 毫秒,这就是它落后的原因?

提前致谢

最佳答案

Thread.sleep(250) 并不意味着您的线程将在 恰好 250 毫秒后再次开始执行。

当您 hibernate 一个线程时,它的状态会转到idle。当sleep结束后,进入active,表示可以执行,但是scheduler可能正忙于执行另一个线程(甚至在此之前选择了其他线程执行) .

加上将线程重新执行所需的时间(环境变化)和可能的计时错误,你就会有延迟。大多数变化虽然不是恒定的,但与 sleep 时间无关,因此当 sleep 时间较短时差异相对较大。

最后,请记住 Java 不是实时系统,因此您不能指望时间会遵循紧密的“时间表”(需要一个更好的词)。

关于java - 随着线程速度的增加而失去准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com