这里selector不是clientchannel公共的吗

来源:7-10 NIO模型多人聊天室演示

匪曰思存

2022-02-01

请问老师
ChatClient client = new ChatClient(“127.0.0.1”, 7777);
client.start();
在start方法中
selector = Selector.open();
这个selector是每次都生成一个,还是跟其他client共用一个,看现在截止到第7章 末尾的样子,像是每个client都生成一个的样子。
因为msg为空就直接用
close(selector);
如果是多个clientchannel共用一个selector那不应该是这个channel没读到直接就关掉该selector了。

写回答

1回答

好帮手慕小蓝

2025-02-14

每个 ChatClient 实例通常都有自己的 Selector,以避免线程安全问题。如果你需要多个客户端共享 Selector,确保所有操作都是线程安全的,并且在关闭通道之前从 Selector 中注销通道。

0
0

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程