NIO
IO是面向流的,NIO是面向缓冲区
IO 阻塞 一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入
NIO 非阻塞 一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变得可以读取之前,该线程可以继续做其他的事情。
Selector
(选择器)
向Selector注册Channel,然后调用它的select()方法
这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新的连接进来、数据接收等。
Channel(通道)
Channel是双向的,既可以用来进行读操作,又可以用来进行写操作
FileChannel—文件
DatagramChannel—UDP (
SocketChannel
ServerSocketChannel)—TCP
Buffer(缓冲区)
ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer MappedByteBuffer