作者p52189 (皮爺)
看板java
標題Re: [問題] 通知/群播/observer
時間Mon Dec 12 11:10:35 2011
我是原PO
Observer我翻了老半天還是看不懂xD
等一下要拿去問老師
不過這一題我用暴力堆磚法(?)解出來了
做法就是Thread裡頭寫一個list,用來裝所有Thread的位置
Thread物件寫一個傳出訊息的send方法
接著再寫一個public的群播的方法
從list第一個位置走到最後像這樣
for(Player element:playerList){
element.send(message);
}
之後只要叫這個群播的方法它就會群播了0___0
沒有用到無窮回圈
只是寫得很醜而且結構很怪,不知道安全性是不是很糟糕我也不太懂
當初我卡住的原因是不知道各個Thread應該如何互相通知
後來直接把大家的位置寫進去就叫得到了
不知道有沒有用處...總之就貼出來給大家笑一笑XD
※ 引述《p52189 (皮爺)》之銘言:
: 大家好
: 我寫了一個main方法,它會叫用多條Thread去做socket連線的動作
: 我希望這支程式能有個群播的功能,一人發話大家都看得到
: 想法是,所有Thread共用一個地址,像是把要交換的東西寫在公佈欄上那樣
: 所以這個公佈欄應該會在main方法所在的class裡頭
: 但是問題來了
: 我要怎麼通知其他Thread,公佈欄更新了呢?
: 我有想過寫個timer之類的東西每幾秒刷新一次
: 不過馬上就覺得這個解法實在是太鳥了囧
: 請問該如何實作呢?
: 或是整個結構打掉重寫也沒關係@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.249.112.188
→ aleelyle:此作法非thread-safe 有可能發生問題 12/12 13:16
對= =
我應該想辦法把它鎖起來
→ adrianshum:如設計上只會有一thread去send,非thread-safe無不可 12/13 10:18
不過看起來是有可能衝到的
因為有可能同時多人需要群播囧
→ qrtt1:嗯,可能得注意ConcurrentModificationException的問題 12/13 11:13
這是什麼@__@?
※ 編輯: p52189 來自: 114.44.8.217 (12/13 16:08)