![](/img/trans.png)
[英]Java synchronization: how to have waiting threads not execute the synchronized task
[英]Is it bad to have threads waiting in java?
我有一個基本上包含的線程
while(true) {
current = BlockingQueue.take();
results = queryDatabaseWith(current);
AtomicReference.set( results );
}
實際上,隊列只會有一些東西放在上面,但重要的是,當事情發生時,數據庫查詢會以正確的順序發生。 原子引用很好,因為我只關心上一個數據庫查詢的結果。
把它放在一個線程上是不好的做法,基本上都是等待一整天?
一般來說,等待線程並不壞,這是常見的做法,通常是最好的解決方案。
由於答案非常簡短,只需快速建議: 如果您的線程沒有必要立即做出反應 ,您可以考慮將Thread.yield
添加到無限等待循環中,具體取決於它運行的系統,可以節省一些不必要的CPU -用法。 請參閱Oracle文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.