Re: [問題] 關於thread間交換訊息的問題

看板java作者 (Pao)時間19年前 (2006/10/25 19:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《michaelz (michaelz)》之銘言: : 我想做一個類似聊天室的程式, 有一個server負責listen,當有client連線進來時 : 就分一個thread去處理. 如何讓一個client的訊息可以送到其他所有的client呢 : 另外server也可能有幾個物件會要送到所有的client. : 聊天室的部分目前想到是設一個static的物件然後所有的client定時去讀再判斷有沒改變 : 至於 server那部現在還想不到..請問有什麼好的方法嗎?..thx 如果不考慮效率還是有的沒的、雜七雜八的話。 我的偷懶方式如下: 使用簡單的Socket去作。 Server負責分派每個Client一個Thread去服務。 同時也將每個Thread放進List裡面,傳給新分派的Thread。 (當然這些Thread是要被繼承過的,得以增加功能) 而每個Thread的工作就是聆聽該client的傳來訊息, 此時Thread當然是被阻斷(Block)在該輸入資料流。 每個Thread要有公開的方法可以讓其他Thread呼叫, 此方法即為傳送訊息到該Client,姑且叫它send方法吧。 然後當某Thread收到訊息時,就呼叫List裡面,每個Thread的send方法。 也就是說收到訊息的Thread,要負責把訊息傳到每個Client去。 過程發現不能傳表示該Client斷線,要順便把該Thread從List移除。 當然某Thread自己發現對方斷線,也要順便把自己從List裡移除。 而這些像send方法、List的新增、刪除等,都要同步化。 不然可能會有某些詭異的事情發生...囧 (當然同步化的競爭,會讓效率降低,不過聊天室應該沒關係吧...^^") 以上是小弟我懶惰的方法,希望會有幫助... 有錯還是有疏忽,還請各位高手糾正及補充...^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.65.151
文章代碼(AID): #15FqyuTQ (java)
討論串 (同標題文章)
文章代碼(AID): #15FqyuTQ (java)