看板 java 關於我們 聯絡資訊
小弟是最近才開始接觸到 NIO 有NIO寫入的問題想請教大家 一般在書上或是網路上看到的例子大多是 while(...) { //selector 輪詢 .... if ( key.isAcceptable() ) { //接收連線 .... } if ( key.isWritable() ) { //寫入 SocketChannel client = (SocketChannel) key.channel(); ..... client.write(buffer); } } 只是目前遇到的問題是 小弟有另一個 Thread 定時會去讀取資料庫 然後再寫到某幾個 Socket 中 (不一定是全部) 想請問一下如何在其他 Thread 寫資料到 SocketChannel 因為沒看到例子因此寫的很猶豫 如果網路上有例子的話也希望能夠分享一下 謝謝 我自己想到的方式有兩個,但不知合不合法 : 1. 共用寫入的 buffer ,用 synchonized 處理存取問題 2. 不寫 key.isWritable 那段, 把SocketChannel 或 socket 存進 list 中直接使用 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.2.128
LaPass:我沒摸過NIO說.... 不過之前寫過多人連線的東西 10/24 01:16
swpoker:這些都可以用mvc(trigger/listener)去實作 10/24 08:58
smfy:就是想知道在其他 Thread 寫資料到 NIO 的 Socket 的方法 10/24 11:27
LaPass:如果是一般socket,直接寫進去就好了,NIO不清楚..... 10/24 13:48
smfy:我也只會用一般 Socket 的做法~唉~ 10/24 23:57
swpoker:先寫一個統一處理作業的中心的類別-我會採用facade樣式 10/25 09:25
smfy:感謝樓上的回答,但我看了一下facade,不是很確定它怎麼用在 10/25 16:41
smfy:多執行緒 我感覺比較像是callback和listener的機制~ 10/25 16:43