Java-NIO非阻塞输入/输出流

58 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情

Java-NIO非阻塞输入/输出流

Java NIO核心部分有channel通道,buffer缓冲区,selector选择器;数据主要通过通道和缓冲区之间双向传输,选择区用于监听多个通道事件。

NIO缓冲区

NIO缓冲区可以灵活前后移动数据,但是要注意的是缓冲区有可能会被覆盖原有数据。

NIO非阻塞

使一个线程从一个通道发送请求读取数据,若没有数据,则继续做其他事情,不会阻塞当前线程。

channel通道

channel通道是双向的,即既可以用来读取数据,也可以用来存储数据。channel通道主要实现类有FileChannel/DatagramChannel/SocketChannel/ServerSockerChannel。

Buffer缓冲区

buffer缓冲区是一个容器,一个连续数组。buffer缓冲区和channel是一起使用的,不管是读操作,还是写操作。主要实现类有ByteBuffer/IntBuffer/CharBuffer/LongBuffer/DoubleBuffer/FloatBuffer/ShortBuffer。

selector选择器

selector可以检测多个通道上是否有事件发生,当检测有事件到来时,会进行相应读写操作。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情