Channel :一个双向的通道,可以用来读取和写入数据。读取的时候会先从buffer 空间里面获取数据。写入的时候也先写入到buffer缓冲区。
包含了:fileChannel,datagramChannel/socketChannel,socketChannel,ServerSocketChannel。分别对应文件。UDP协议,和TCP协议。
Buffer:缓冲区。主要用来缓冲读取写入的数据。在读取的时,需要注意使用flip()方法,就是回到起始位置,会把position置0。
写入的时候需要用到clear和compact。clear会清空当前的缓冲区。compact会清空已经被读取的数据,未被读取的数据会放在缓冲区的起始位置,后写入的数据会写在未读取数据的后面。
capacity:就是Buffer区域的大小。
position:当前Buffer区域的位置。初始值为0,默认最大可以为capacity-1。
limit:当读取的时候表示能从缓冲区读取多少数据。如果是写入,limit默认是等于capacity,表示最多能写多少数据。
buffer类型:有很多的基本数据类型。longbuffer、intbuffer等等
Selector 选择器:会检测多个通道。每个通道都需要注册到selector 选择器上。然后选择器回去遍历这些通道,看看哪个通道准备就绪。通道注册在选择器上后,会返回一个selectionKey。然后可以遍历selectionkey 或者针对某个selectionkey做操作