java - 为什么阻塞而不是循环?

标签 java multithreading concurrency busy-loop

编写以下代码被认为是不好的做法的原因有哪些?

  while (someList.isEmpty()) {
    try {
      Thread.currentThread().sleep(100);
    }
    catch (Exception e) {}
  }
  // Do something to the list as soon as some thread adds an element to it.

对我来说,选择一个任意值来 hibernate 不是一个好的做法,在这种情况下我会使用 BlockingQueue,但我想知道是否有不止一个原因不应该写这样的代码。

最佳答案

它在对事件采取行动之前平均延迟 50 毫秒,并且在没有要处理的事件时每秒唤醒 10 次。如果这两件事都不是特别重要,那就太不雅观了。

关于java - 为什么阻塞而不是循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831353/

相关文章:

java - 在泛型类中使用接口(interface)作为边界类型

Java:生产者-消费者两个线程停止工作,卡住

Python从URL高效下载图像

java - 如何中断执行线程

java - 当 Eclipse 中抛出未经检查的异常时,从新创建的线程打印堆栈跟踪

java - 如何从Hibernate的结果集中获取List<Map<String,Object>>?

Java 初学者 : nullpointerexception error

java - Perf4j 私有(private)方法的 @profiled 注释

c++ - 在运行循环外声明、分配和释放线程局部指针变量

multithreading - Qt中是否有类似Grand Central Dispatch的类似物?