我们知道java 的bio是一个请求对应一个线程,那么java nio 可不可以这样理解,一个请求对应一个channel
最近在学习java nio 方面的知识,这个点一直有点奇怪,nio编程里有这样一段通用代码
for(xxxxxxx){
if(selectionKey.isAcceptable()){
ServerSocketChannel ssc = (ServerSocketChannel) selectionKey.channel();
SocketChannel socketChannel = ssc.accept();
socketChannel.configureBlocking(false);
socketChannel.register(selector,SelectionKey.OP_READ);
}
f(selectionKey.isReadable()){
.......
}
}
循环扫描通道的状态,在通道accept的时候将会将会生成一个新的通道socketChannel,然后指定监听的事件,这样一个tcp连接都将形成一个channel,问一下这样理解对吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1、bio是一个请求来了,新开一个线程去处理
2、nio却不是一个请求对应一个channel,而是一个
tcp连接
对应一个channel.你只从代码层面理解是不可行的,你要把代码和操作系统提供的网络模型结合起来去理解。