java - Java 中的 Thread.sleep() 有多昂贵?

标签 java multithreading

我正在编写一些代码,想知道在每次迭代开始时调用 Thread.sleep(10) 来限制循环是否是糟糕的设计。我的另一个选择是以更长的时间间隔更少地调用 Thread.sleep ,但这对于我正在编码的内容来说并不是最佳选择。有谁知道在使用 Thread.sleep() 时我是否应该关心以非常快的时间间隔恢复/暂停 Java 线程的开销,是否还有其他我应该考虑的替代方案? - 邓肯·克雷布斯

这是我的更详细的用例:

我有一个回溯测试数据源,它会迭代大量的报价对象列表,并且我想限制消耗报价的速度,以便我可以加快或减慢回溯测试的时间。对于初学者来说,除了 Thread.sleep() 之外,我没有看到其他选项,如果是这种情况,那么我可以在消耗每个报价后 hibernate 很短的时间,或者批量消耗一个集合,然后在消耗下一批之前 hibernate 。如果我可以一次限制此消费线程 1 个报价,那么我用于理解报价数据的框架的其余部分运行效果最好,希望这是有道理的!

最佳答案

您不应该加快或减慢测试循环 - 而是将循环设计为与测试代码显式同步(例如通过 CountDownLatch 或 Condition)。依赖于被测代码执行速度的测试代码本质上是不稳定的,您将会看到问题。

关于java - Java 中的 Thread.sleep() 有多昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570896/

相关文章:

java - 选项类型变量和返回它们的方法的通用命名约定

java - 将字符串中的字符与字母进行比较?

java - Brother SDK调用PrintImage导致JNI DETECTED ERROR IN APPLICATION : GetStringUTFChars received NULL jstring

android - 我可以为当前线程锁定 SQLite 表吗?

java - 为小型桌面应用程序构建 GUI

java - 在 webapp 中创建并发 HashMap

ios - 在后台线程中搜索核心数据,函数随机终止

c++ - 如何在多线程环境中使用旧的单线程 C++ 库

多线程 - 一组中所有对之间的计算

java - 为什么 Android Java 中 putInt 需要字符串?