什么是NIO?
NIO是java1.4后提出的概念,之前的IO都是阻塞的,比如读取文件,读取线程必须需要等到文件读完才可以返回,但是采用NIO,IO线程不必等待文件的读取,在读取过程中可以去干其他的事情。
NIO核心组件
- Channels:通道
- Buffers:缓冲区
-
Channels & Buffers
数据可以从Channel读到Buffer(内存),也可以从Buffer(内存)写回到通道中。
常用的Channels
FileChannel(文件)
- DatagramChannel(网络,UDP)
- SocketChannel(网络,TCP,客户端)
ServerSocketChannel(网络,TCP,服务器)
常用的Buffers
ByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
选择器

选择器允许单个线程处理多条通道,Selector有一个阻塞的方法select()当注册的通道都没有数据时,其阻塞,当有通道返回事件,其不阻塞。总结

