核心概念解读:
Buffer:对于NIO,不能像原生IO一样,直接从流中直接读取或写入数据,而是必须通过Buffer,来写入或读取到Channel。根据Java基本类型可以将Buffer分为ByteBuffer、ShortBuffer、IntBuffer等。其底层是对应类型的数组。涉及到主要三个参数:position,limit,capacity.
position:指向将要操作的位置,limit指向第一未被操作的位置,capacity是数组的大小。
buffer的一些操作会影响到这些参数。比如,allocte(int)构造完成后,limit==capacity,position=0;put(),每增加一个元素后position+1,flip()会使得limit=position,position=0.
Channel:相对与原生IO,是双向的。既可以Reader又可以当做Writer
Selector是异步IO的核心对象
Buffer:对于NIO,不能像原生IO一样,直接从流中直接读取或写入数据,而是必须通过Buffer,来写入或读取到Channel。根据Java基本类型可以将Buffer分为ByteBuffer、ShortBuffer、IntBuffer等。其底层是对应类型的数组。涉及到主要三个参数:position,limit,capacity.
position:指向将要操作的位置,limit指向第一未被操作的位置,capacity是数组的大小。
buffer的一些操作会影响到这些参数。比如,allocte(int)构造完成后,limit==capacity,position=0;put(),每增加一个元素后position+1,flip()会使得limit=position,position=0.
Channel:相对与原生IO,是双向的。既可以Reader又可以当做Writer
Selector是异步IO的核心对象