我有一个基本上包含
的主题while(true) {
current = BlockingQueue.take();
results = queryDatabaseWith(current);
AtomicReference.set( results );
}
实际上,队列只会有一些东西放在上面,但重要的是,当事情发生时,数据库查询会以正确的顺序发生。原子引用很好,因为我只关心上一次数据库查询的结果。
将这个放在线程上是不好的做法,基本上都是等待一整天?
答案 0 :(得分:4)
通常情况下等待线程并不坏,这是常见做法,通常是最好的解决方案。
由于答案很短,只需快速建议:
如果您的线程没有必要立即做出反应,您可以考虑将Thread.yield
添加到无限等待循环中,具体取决于它运行的系统,可以节省一些不必要的CPU使用量。 See the Oracle documentation