作者batista5566 (炸彈摔5566)
看板AndroidDev
標題[問題] 多執行緒(多線程)中數值的傳遞
時間Fri May 31 21:57:57 2013
請教各位,
如果我有一個執行緒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)
1F:推 givemepass:這讓我想到有一本書的例子 它是寫龜兔賽跑 05/31 22:13
2F:→ givemepass:龜跟兔是獨立的執行緒 然後互相去讀對方跑到終點沒 05/31 22:14
3F:→ givemepass:如果其中一個跑到終點 就結束讀取 05/31 22:15
4F:推 givemepass:它是透過PipedInputStream跟PipedOutputStream在傳送 05/31 22:20
5F:→ givemepass:晚點我把程式碼貼上來 05/31 22:21
6F:→ batista5566:謝謝 05/31 22:25
7F:→ givemepass:我要睡了 明天再貼:D 你可以先研究看看 05/31 22:26
8F:→ batista5566:嗯 05/31 22:30
我想問一下,這樣的方法,會不會在相互等待時,
因為某一方執行緒數據計算量大時,會造成另一方的計算延遲?
謝謝@@"
p.s.:
因為看到這篇文章而感
http://sevensavants.blogspot.tw/2012/12/androidjava.html
※ 編輯: batista5566 來自: 140.124.43.36 (05/31 23:11)
9F:→ Killercat:deleglate 做完一次就通知一次b 不過要注意thread safe 05/31 23:31
10F:→ jerrysky:A extends observable B 用 observer 去收通知 06/01 00:11
11F:→ Killercat:我還是比較推delegate 因為observable沒那麼直觀好維護 06/01 00:38
12F:→ Killercat:雖然兩者做的事情基本上是100%一樣的 06/01 00:38
13F:推 exoduschi:在B那加一個queue B非同步等queue A有結果pass到B 06/01 02:22
14F:→ exoduschi:passing messages by main thread is better! 06/01 02:23
15F:→ janice001:能不能宣告一個資料物件讓ab一起去存取?這樣不用等 06/01 14:25
16F:→ janice001:a消失之前放個標記 b看到就不拿資料 這樣 06/01 14:26