亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java 中線程安全的阻塞隊列是哪個?

java 中線程安全的阻塞隊列是哪個?

阿波羅的戰車 2018-10-03 10:19:37
一個線程往隊列里插東西,一個線程讀東西,當隊列是空的時候總是輪空,發現占用了大量的 cpu ,通過 yeild 沒有改善,通過 sleep(1) 就好了,但是這樣影響性能。所以,我想換一個插入是總是直接成功,但是讀取是阻塞的隊列。java 里有沒有現成的?
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

現成的不知道有沒有,自己實現的話可以用信號量。

另外你目前sleep的實現方式應該沒什么問題的,對效率的影響很有限。其實阻塞在底層實現是也是sleep的,只不過時間更短。


查看完整回答
反對 回復 2018-10-11
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

java.util.concurrent.LinkedBlockingQueue?樓主可以直接使用這個隊列,是線程安全的。

queue.take()?獲取數據,如果當前沒有數據,則阻塞直到返回可用數據
queue.poll()?獲取數據,如果當前沒有數據,返回null
queue.pool(timeout, TimeUnit)?獲取數據,如果沒有數據,阻塞一定的時間后如果有數據直接返回,沒有則返回null


樓主這個是典型的生產者/消費者模式


查看完整回答
反對 回復 2018-10-11
  • 2 回答
  • 0 關注
  • 1463 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號