NIO的核心组件有:channel、buffer、selecter。
channel:通道和流有点类似,NIO可以通过通道将数据读取到缓冲区,或者是将缓冲区中的数据写入到通道中,一个通道对应一个缓冲区。
buffer:缓冲区是一块儿独立的内存空间,数据可以被存放在缓冲区中处理,缓冲区的存在减少了io操作的频次,提高了io性能。
selecter:通道可以被注册到选择器中,多个通道可以被注册到同一个选择器,当选择器监视的某一个通道中发生了读写事件,选择器就可以将这个读写事件发送给某个空闲的线程进行处理。一个选择器可以对应一个或多个线程。