简单理解NIO

来源:互联网 发布:boost高并发网络框架 编辑:程序博客网 时间:2024/05/21 14:58

NIOJavaNon-blocking IO(Java非阻塞I/O)

 

关键词:

Channel(通道)  Buffer(缓存区) Selector(选择器)

 

Channel(通道)类似于Java传统读取IO中的Stream,但是区别是一个Stream一般是只能读或者只能写,比如InputStream只能readOutputStream只能write。但是Channel既能读也能写

 Buffer(缓存区),NIO中读写的东西一般都要先放在Buffer

Selector(选择器)是NIO中最关键的一个部分,Selector的作用就是用来轮询每个注册的Channel,一旦发现Channel有注册的事件发生便获取事件然后进行处理

 

重点了解数据传输的过程,不论读写都先到buffer

 

Selector

Handle

register

 

当前留下的NIOnetty

 

问题:buffer之间也有数据交换?selecter的事件处理 channel上的事件定义

 

socketservlet有什么异同?

Socketj2se在网络编程这块最基本的东西。把一系列网络io复杂性封装。但是光有io,光能传输数据,不足以完成标准化的网络通信。所以在这个基础上,加入了协议支持。比如web容器(tomcat)加入了http协议的解析(所谓的协议,就是一系列带有标准格式的字符串)。而把里面可以独立给程序员的模型接口抽取出来,就是Servlet。所以,Servlet可以看做是web容器运行的一部分逻辑(请求和响应,即requestresponse其实可以看成是dto,最后执行完servlet.service方法后,由容器传递给socket类的outputstream,完成相关操作)。而Socket则是web容器的核心(负责交换协议)

 

参考:

Java NIO:NIO概述

Java Socket实战之六 使用NIO包实现Socket通信

 


0 0
原创粉丝点击