[問題] NIO 多執行緒寫入時的做法
小弟是最近才開始接觸到 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
推
10/24 01:16, , 1F
10/24 01:16, 1F
推
10/24 08:58, , 2F
10/24 08:58, 2F
→
10/24 11:27, , 3F
10/24 11:27, 3F
推
10/24 13:48, , 4F
10/24 13:48, 4F
→
10/24 23:57, , 5F
10/24 23:57, 5F
推
10/25 09:25, , 6F
10/25 09:25, 6F
→
10/25 16:41, , 7F
10/25 16:41, 7F
→
10/25 16:43, , 8F
10/25 16:43, 8F