我想知道更多关于线程睡眠解决方案是如何工作的,以及除了简单地解析睡眠()之外,它还与什么关联。java线程睡眠解决方案和等待同步块
我知道它是由操作系统定义的,在Windows上它的定义是典型的15ms。我还没有能够通过最近环顾四周来证实这一点,但我隐约记得这个15ms是由操作系统环绕的,并且对所有线程都是“全局”的,这意味着线程可以睡眠的最短时间不是15ms,而是最大的睡眠(1)。是对的吗?所有操作系统是否都一样(超出期限)?
我不能想到这可能很重要的情况,但是会在这个睡眠周期的行动点发生线程的虚假唤醒,还是会随时发生?
在一个同步块上,等待线程是否有效地休眠(1)并在每个周期检查锁,或者线程退出块是否立即唤醒等待线程?这对所有操作系统都是一样的吗?
当wait()之后的线程通过notify()时,它会在等待锁的时候以与上面相同的方式处理,还是不同?
从性能的角度来看,15ms循环是否还有其他时间?
谢谢,这清理了很多。我应该注意到sleep()的另一个常见用法是分解繁忙的循环来融化你的cpu。在这种情况下15ms意味着循环将仅执行〜66次/秒,这可能根据应用产生人类显着的差异。 – Numeron
@Numeron - 你需要更大的风扇/散热器。没有什么 - 我用过的所有盒子都可以平放。我可以听到风扇的速度随着所有内核完全加载CPU而增加,但没有什么不好的事情发生。 –
台式机很好,但在笔记本电脑上它可能是一个严重的问题。 – Numeron