[問題] BlockingQueue

作者: uopsdod (pcman)   2017-06-24 15:04:20
最近正在看Thinking in Java 4/e, 讀一讀有些問提陸續想請教大家
作者: ssccg (23)   2017-06-24 15:17:00
就不能確保啊,你把add後面加個thread sleep慢慢加就知道單純是加10個的動作太快,比consumer開始執行還快
作者: uopsdod (pcman)   2017-06-27 23:12:00
所以我能說 其實還是用.addAll(..)才算真的安全?
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2017-06-28 19:20:00
開個thread用布林判斷,全都加入之後再允許存取?
作者: cowbaying (是在靠北喔)   2017-06-29 01:10:00
sync就好了吧...
作者: seedli (帶骨的火腿)   2017-07-05 17:44:00
blockingQueue是threadsafe,沒問題的put()的API https://goo.gl/3YvvLQ 塞滿之後才會wait()
作者: ssccg (23)   2017-07-05 17:59:00
應該說實作上通常不會需要去防止放一個拿一個的問題,通常本來就會希望consumer有空就馬上處理,原po的範例程式只是要demo效果寫那樣的執行結果比較好看,不然真的要按照順序的話,該用的不是Priority,而是Task之間本來就要有順序另外addAll是thread safe,但沒有保證atomic

Links booklink

Contact Us: admin [ a t ] ucptt.com