作者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
1F:→ aleelyle:此作法非thread-safe 有可能发生问题 12/12 13:16
对= =
我应该想办法把它锁起来
2F:→ adrianshum:如设计上只会有一thread去send,非thread-safe无不可 12/13 10:18
不过看起来是有可能冲到的
因为有可能同时多人需要群播囧
3F:→ qrtt1:嗯,可能得注意ConcurrentModificationException的问题 12/13 11:13
这是什麽@__@?
※ 编辑: p52189 来自: 114.44.8.217 (12/13 16:08)