[問題] 多執行緒(多線程)中數值的傳遞

看板AndroidDev作者 (炸彈摔5566)時間12年前 (2013/05/31 21:58), 編輯推噓3(3013)
留言16則, 6人參與, 最新討論串1/1
請教各位, 如果我有一個執行緒A(thread),會在其run()中持續計算出一個數值, 而同時我有另一個執行緒B(runnable),跟A要是並行的執行緒(不並行,B會拖累A), 我想在B中,持續利用A計算出的數值, 如果A執行緒結束,B也不會對A的計算數值做利用。 因此我想請教各位,A的數值該用甚麼方法傳給B? p.s. 兩個執行緒都在同一個java檔中,而該檔案並非Activity, 因為我學Android的時間不長,都是看網路資料, 只是這個地方我找不到有人討論,所以又上來請教各位高手,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.43.36 ※ 編輯: batista5566 來自: 140.124.43.36 (05/31 21:59)

05/31 22:13, , 1F
這讓我想到有一本書的例子 它是寫龜兔賽跑
05/31 22:13, 1F

05/31 22:14, , 2F
龜跟兔是獨立的執行緒 然後互相去讀對方跑到終點沒
05/31 22:14, 2F

05/31 22:15, , 3F
如果其中一個跑到終點 就結束讀取
05/31 22:15, 3F

05/31 22:20, , 4F
它是透過PipedInputStream跟PipedOutputStream在傳送
05/31 22:20, 4F

05/31 22:21, , 5F
晚點我把程式碼貼上來
05/31 22:21, 5F

05/31 22:25, , 6F
謝謝
05/31 22:25, 6F

05/31 22:26, , 7F
我要睡了 明天再貼:D 你可以先研究看看
05/31 22:26, 7F

05/31 22:30, , 8F
05/31 22:30, 8F
我想問一下,這樣的方法,會不會在相互等待時, 因為某一方執行緒數據計算量大時,會造成另一方的計算延遲? 謝謝@@" p.s.: 因為看到這篇文章而感 http://sevensavants.blogspot.tw/2012/12/androidjava.html ※ 編輯: batista5566 來自: 140.124.43.36 (05/31 23:11)

05/31 23:31, , 9F
deleglate 做完一次就通知一次b 不過要注意thread safe
05/31 23:31, 9F

06/01 00:11, , 10F
A extends observable B 用 observer 去收通知
06/01 00:11, 10F

06/01 00:38, , 11F
我還是比較推delegate 因為observable沒那麼直觀好維護
06/01 00:38, 11F

06/01 00:38, , 12F
雖然兩者做的事情基本上是100%一樣的
06/01 00:38, 12F

06/01 02:22, , 13F
在B那加一個queue B非同步等queue A有結果pass到B
06/01 02:22, 13F

06/01 02:23, , 14F
passing messages by main thread is better!
06/01 02:23, 14F

06/01 14:25, , 15F
能不能宣告一個資料物件讓ab一起去存取?這樣不用等
06/01 14:25, 15F

06/01 14:26, , 16F
a消失之前放個標記 b看到就不拿資料 這樣
06/01 14:26, 16F
文章代碼(AID): #1HgAnfEV (AndroidDev)