From 4bef86747a15fde83f725be3dd45aaa12d077d5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Sun, 19 Apr 2020 11:27:41 +0800 Subject: [PATCH] =?UTF-8?q?Java=20NIO=20=E5=9F=BA=E7=A1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/Java/nio-tutorial/pom.xml | 24 + .../src/main/java/chat/ChatClient.java | 133 +++ .../src/main/java/chat/ChatServer.java | 134 +++ notes/Java_NIO.md | 823 ++++++++++++++++++ pictures/buffer_clear.png | Bin 0 -> 3402 bytes pictures/buffer_compact.png | Bin 0 -> 8319 bytes pictures/buffer_compact_flip.png | Bin 0 -> 7587 bytes pictures/buffer_duplicate.png | Bin 0 -> 8805 bytes pictures/buffer_flip.png | Bin 0 -> 3098 bytes pictures/buffer_get.png | Bin 0 -> 3258 bytes pictures/buffer_init.png | Bin 0 -> 3681 bytes pictures/buffer_put.png | Bin 0 -> 3306 bytes pictures/buffer_slice.png | Bin 0 -> 8044 bytes pictures/java_nio.pptx | Bin 0 -> 65274 bytes pictures/nio_buffer.png | Bin 0 -> 8850 bytes pictures/nio_chat_group.png | Bin 0 -> 68080 bytes pictures/nio_gather.png | Bin 0 -> 8485 bytes pictures/nio_pipe.png | Bin 0 -> 7358 bytes pictures/nio_scatter.png | Bin 0 -> 8434 bytes 19 files changed, 1114 insertions(+) create mode 100644 code/Java/nio-tutorial/pom.xml create mode 100644 code/Java/nio-tutorial/src/main/java/chat/ChatClient.java create mode 100644 code/Java/nio-tutorial/src/main/java/chat/ChatServer.java create mode 100644 notes/Java_NIO.md create mode 100644 pictures/buffer_clear.png create mode 100644 pictures/buffer_compact.png create mode 100644 pictures/buffer_compact_flip.png create mode 100644 pictures/buffer_duplicate.png create mode 100644 pictures/buffer_flip.png create mode 100644 pictures/buffer_get.png create mode 100644 pictures/buffer_init.png create mode 100644 pictures/buffer_put.png create mode 100644 pictures/buffer_slice.png create mode 100644 pictures/java_nio.pptx create mode 100644 pictures/nio_buffer.png create mode 100644 pictures/nio_chat_group.png create mode 100644 pictures/nio_gather.png create mode 100644 pictures/nio_pipe.png create mode 100644 pictures/nio_scatter.png diff --git a/code/Java/nio-tutorial/pom.xml b/code/Java/nio-tutorial/pom.xml new file mode 100644 index 0000000..e2a33b5 --- /dev/null +++ b/code/Java/nio-tutorial/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.example + nio-tutorial + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/code/Java/nio-tutorial/src/main/java/chat/ChatClient.java b/code/Java/nio-tutorial/src/main/java/chat/ChatClient.java new file mode 100644 index 0000000..7aa600a --- /dev/null +++ b/code/Java/nio-tutorial/src/main/java/chat/ChatClient.java @@ -0,0 +1,133 @@ +package chat; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.ClosedSelectorException; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; +import java.nio.channels.SocketChannel; +import java.nio.charset.StandardCharsets; +import java.util.Scanner; +import java.util.Set; + +public class ChatClient { + + private String hostname; + private int port; + private Selector selector; + private final ByteBuffer rBuffer = ByteBuffer.allocate(1024); + private final ByteBuffer wBuffer = ByteBuffer.allocate(1024); + + ChatClient(String hostname, int port) { + this.hostname = hostname; + this.port = port; + } + + public void start() { + try { + // 创建SocketChannel + SocketChannel socketChannel = SocketChannel.open(); + socketChannel.configureBlocking(false); + socketChannel.connect(new InetSocketAddress(hostname, port)); + + // 创建selector + selector = Selector.open(); + // 注册监听CONNECT事件 + socketChannel.register(selector, SelectionKey.OP_CONNECT); + + // 持续调用select + while (true) { + selector.select(); + Set selectionKeys = selector.selectedKeys(); + for (SelectionKey selectionKey : selectionKeys) { + // 处理Connect事件 + if (selectionKey.isConnectable()) { + SocketChannel clientChannel = (SocketChannel) selectionKey.channel(); + // 有可能正处于连接中的状态 + if (clientChannel.isConnectionPending()) { + // 等待连接完成 + clientChannel.finishConnect(); + // 开始监听用户输入 + inputListening(clientChannel); + // 为clientChannel注册上Read + clientChannel.register(selector, SelectionKey.OP_READ); + System.out.println("尊敬的用户" + clientChannel.socket().getLocalPort() + ", 你已成功加入群聊!"); + } + // 处理Read事件 + } else if (selectionKey.isReadable()) { + handleMessage(selectionKey); + } + } + } + } catch (ClosedSelectorException e) { + // 主动关闭客户端,不做任何处理 + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + selector.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 监听用户来自控制台的输入 + * + * @param clientChannel 客户端Channel + */ + private void inputListening(SocketChannel clientChannel) { + // 要持续监听用户输入,但又不能阻塞主线程,所以需要一个单独的线程来完成 + new Thread(() -> { + Scanner scanner = new Scanner(System.in); + try { + while (scanner.hasNextLine()) { + String input = scanner.nextLine(); + if (!input.isEmpty()) { + if ("exit".equals(input)) { + selector.close(); + return; + } + wBuffer.put(input.getBytes()); + wBuffer.flip(); + while (wBuffer.hasRemaining()) { + clientChannel.write(wBuffer); + } + wBuffer.clear(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + } + + /** + * 处理来自其他客户端的消息 + * + * @param selectionKey 处于Read状态的selectionKey + */ + private void handleMessage(SelectionKey selectionKey) { + try { + SocketChannel channel = (SocketChannel) selectionKey.channel(); + StringBuilder buffer = new StringBuilder(); + while (channel.read(rBuffer) > 0) { + rBuffer.flip(); + buffer.append(StandardCharsets.UTF_8.decode(rBuffer)); + rBuffer.clear(); + } + System.out.println(buffer.toString()); + } catch (IOException e) { + selectionKey.cancel(); + selector.wakeup(); + System.out.println("聊天室服务器已关闭!"); + } + } + + + public static void main(String[] args) { + new ChatClient("127.0.0.1", 8888).start(); + } +} diff --git a/code/Java/nio-tutorial/src/main/java/chat/ChatServer.java b/code/Java/nio-tutorial/src/main/java/chat/ChatServer.java new file mode 100644 index 0000000..a2b4ec9 --- /dev/null +++ b/code/Java/nio-tutorial/src/main/java/chat/ChatServer.java @@ -0,0 +1,134 @@ +package chat; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.*; +import java.nio.charset.StandardCharsets; +import java.util.Set; + +public class ChatServer { + + private String hostname; + private int port; + private Selector selector; + private final ByteBuffer rBuffer = ByteBuffer.allocate(1024); + private final ByteBuffer wBuffer = ByteBuffer.allocate(1024); + + ChatServer(int port) { + this("127.0.0.1", port); + } + + ChatServer(String hostname, int port) { + this.hostname = hostname; + this.port = port; + } + + public void start() { + try { + // 创建ServerSocketChannel + ServerSocketChannel serverChannel = ServerSocketChannel.open(); + // 设置为非阻塞模式 + serverChannel.configureBlocking(false); + serverChannel.bind(new InetSocketAddress(hostname, port)); + + // 创建selector + selector = Selector.open(); + // 注册监听CONNECT事件 + serverChannel.register(selector, SelectionKey.OP_ACCEPT); + + // 持续调用select() + while (true) { + selector.select(); + Set selectionKeys = selector.selectedKeys(); + for (SelectionKey selectionKey : selectionKeys) { + // 处理Accept事件 + if (selectionKey.isAcceptable()) { + // 获取ServerSocketChannel + ServerSocketChannel server = (ServerSocketChannel) selectionKey.channel(); + // 通过ServerSocketChannel获取SocketChannel + SocketChannel clientChannel = server.accept(); + clientChannel.configureBlocking(false); + // 注册Read事件 + clientChannel.register(selector, SelectionKey.OP_READ); + System.out.println("欢迎" + clientChannel.socket().getPort() + "加入聊天室!"); + // 处理Readable事件 + } else if (selectionKey.isReadable()) { + handleMessage(selectionKey); + } + } + selectionKeys.clear(); + } + + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭selector后,与之相关的所有资源都会被释放 + try { + selector.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 处理客户端消息 + * + * @param selectionKey 处于Read状态的SelectionKey + */ + private void handleMessage(SelectionKey selectionKey) { + SocketChannel clientChannel = (SocketChannel) selectionKey.channel(); + try { + // 获取来自客户端的消息 + StringBuilder buffer = new StringBuilder(); + while (clientChannel.read(rBuffer) > 0) { + rBuffer.flip(); + buffer.append(StandardCharsets.UTF_8.decode(rBuffer)); + rBuffer.clear(); + } + String msg = buffer.toString(); + // 将消息发送给其他客户端 + broadcastMessage(clientChannel, msg); + } catch (IOException e) { + // 该异常由clientChannel.read(rBuffer)方法抛出,如果出现该异常,则说明clientChannel已经关闭 + // 此时需要调用cancel()取消注册在selector上的事件 + selectionKey.cancel(); + // 在多线程环境下,如果另一个线程正在阻塞地调用select(),因为事件集已经改变,因此需要通过wakeup()让其立刻返回并重新select() + selector.wakeup(); + System.out.println("用户" + clientChannel.socket().getPort() + "退出聊天室!"); + } + } + + /** + * 将客户端发来的消息广播给其他客户端 + * + * @param clientChannel 消息源 + * @param msg 消息 + */ + private void broadcastMessage(SocketChannel clientChannel, String msg) { + try { + // 遍历当前selector上所有channel + for (SelectionKey selectionKey : selector.keys()) { + SelectableChannel channel = selectionKey.channel(); + // 消息不需要转发给ServerSocketChannel和当前客户端自己 + if (selectionKey.isValid() && !(channel instanceof ServerSocketChannel) && !channel.equals(clientChannel)) { + SocketChannel otherClient = (SocketChannel) channel; + wBuffer.put(("用户" + clientChannel.socket().getPort() + ": " + msg).getBytes()); + while (wBuffer.hasRemaining()) { + wBuffer.flip(); + otherClient.write(wBuffer); + } + wBuffer.clear(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public static void main(String[] args) { + new ChatServer(8888).start(); + } +} diff --git a/notes/Java_NIO.md b/notes/Java_NIO.md new file mode 100644 index 0000000..ec8353a --- /dev/null +++ b/notes/Java_NIO.md @@ -0,0 +1,823 @@ +## 一、Buffer + +### 1.1 缓冲区属性 + +![nio_buffer](../pictures/nio_buffer.png) + +所有缓冲区都直接或间接继承自 Buffer 抽象类,Buffer 中定义了缓冲区的四个基本属性: + +```java +public abstract class Buffer { + + private int mark = -1; + private int position = 0; + private int limit; + private int capacity; + ... +} +``` + ++ **容量 (Capacity)** :缓冲区所能容纳元素的个数。 ++ **上界 (Limit)**:缓冲区中现存元素的个数。 ++ **位置 (Position)**:下一个待操作元素的索引。 ++ **标记 (Mark)**:标记位置。通过 `mark()` 方法可以让 mark 等于当前 position;之后通过 `reset()` 方法可以让 position 恢复到标记位置。 + +### 1.2 创建缓冲区 + +通常可以通过以下两种方法来创建缓冲区: + ++ **allocate()**:通过指定缓冲区的容量大小来创建: + +```java +CharBuffer buffer = CharBuffer.allocate(100); +``` + ++ **wrap()**:通过为缓冲区指定初始化数组来创建: + +```java +char[] chars = new char[100]; +CharBuffer buffer = CharBuffer.wrap(chars); +``` + +实际上缓冲区内部就是通过数组来存储元素,以 CharBuffer 为例,它的内部维持有一个名为 `hb` 的数组,用来存放实际的元素: + +```java +public abstract class CharBuffer extends Buffer implements Comparable, Appendable, CharSequence, Readable +{ + final char[] hb; + ... +} +``` + +缓冲区创建完成后,它处于以下初始状态: + +![buffer_init](../pictures/buffer_init.png) + +### 1.3 操作缓冲区 + +**1. put()** + +用于向缓冲区中填充数据。以 CharBuffer 为例,有以下四个常用的重载方法: + +```java +// 使用字符串填充数据 +put(String src) +// 使用字符串填充数据,start为字符串的开始位置,end为字符串的结束位置(不包含) +put(String src, int start, int end) +// 使用数组填充数据 +put(char[] src) +// 使用数组填充数据,offset为数组填充的开始位置,length为填充的长度,不允许越界 +put(char[] src, int offset, int length) +``` + +当我们向 Buffer 中添加数据后,position 属性也会随之变动: + +![buffer_put](../pictures/buffer_put.png) + +**2. get()** + +用于读取缓冲区中的数据。以 CharBuffer 为例,有以下四个常用的重载方法: + +```java +// 获取当前位置(postion)的数据 +char get(); +// 获取指定位置的数据 +char get(int index); +// 获取数据并填充到数组中 +CharBuffer get(char[] dst) +// 获取数据并填充到数据中,offset为数组填充的开始位置,length为填充的长度,不允许越界 +CharBuffer get(char[] dst, int offset, int length) +``` + +**3. flip()** + +该方法会将 position 的值赋给 limit,然后将 position 设置为 0,从而可以由写模式切换到读模式。无论任何情况,只要由写操作转换到读操作,都需要先执行该方法。示例如下: + +```java +CharBuffer buffer = CharBuffer.allocate(100); +buffer.put("hello"); +buffer.flip(); //由写模式切换到读模式 +while (buffer.hasRemaining()) { + System.out.println(buffer.get()); +} +buffer.clear(); +``` + +当使用 `filp()` 将 Buffer 由写模式切换到读模式后:position 属性会恢复到初始位置,代表从此处开始读取数据;limit 属性也会随之变动,代表我们所能读取数据的上界: + +![buffer_flip](../pictures/buffer_flip.png) + +当我们再通过 `get()` 方法进行读取时,position 属性会随之移动,position 和 limit 之间的数据就是待处理的数据: + +![buffer_get](../pictures/buffer_get.png) + +**4. hasRemaining()** + +`hasRemaining()` 用于判断当前的 position 是否小于 limit:如果 position 小于 limit,则返回 true,代表仍存在待处理的数据。 + +**5. clear()** + +将 position 设置为 0,并将 limit 设置为 capacity 的大小,从而让缓冲区恢复到初始状态。此时缓冲区的状态如下: + +![buffer_clear](../pictures/buffer_clear.png) + +**6. compact()** + +用于压缩缓冲区,即将数组中待处理的数据复制到头部。如下所示,会将未读取的 `LL0` 复制到头部: + +![buffer_compact](../pictures/buffer_compact.png) + +需要注意的是这里执行的是复制操作,而不是移动操作,底层调用的是 `System.arraycopy` 方法,因此原有位置上的数据依然存在。但是由于 position 会移动到未处理数据的下一个位置上,所以不用担心原有位置上的数据会被读取到,原因是你切换到读模式时,原有的 `LO` 数据仍处于 limit 之后: + +![buffer_compact_flip](../pictures/buffer_compact_flip.png) + +**7. mark()** + +用于设置标志位,设置好后可以使用 `reset()` 将 position 恢复到该位置: + +```java + buffer.position(2).mark().position(5).reset().position(); //从位置2移动到位置5,之后又恢复到位置2 +``` + +### 1.4 复制缓冲区 + +如果想要对一个已有的缓冲区进行复制,可以有以下三种方法: + +```java +public abstract CharBuffer duplicate(); +public abstract CharBuffer asReadOnlyBuffer(); +public abstract CharBuffer slice(); +``` + +使用 `duplicate()` 复制的缓冲区具有以下特性: + +- 与原缓冲区共享相同的数据元素,这意味着对原缓冲区数据的修改也会影响复制缓冲区; +- 复制缓冲区的 mark、position、limit、capcaity 属性的初始值与复制时原缓冲区的 mark、position、limit、capcaity 的值相同,但这些属性与原缓冲区的属性相互独立,创建后就不再受原有缓冲区的影响; +- 如果原缓冲区是只读缓冲区或直接缓冲区,则复制缓冲区也将继承这些属性。 + +![buffer_duplicate](../pictures/buffer_duplicate.png) + +`asReadOnlyBuffer()` 与 `duplicate()` 类似,但创建的复制缓冲区为只读缓冲区。 + +`slice()` 也与 `duplicate()` 类似,但创建的复制缓冲区与原缓冲区只共享部分数据元素,并且所有标志位都处于原始状态: + +![buffer_slice](../pictures/buffer_slice.png) + +示例如下: + +```java +CharBuffer buffer = CharBuffer.allocate(100); +buffer.put("helloworld"); +buffer.position(2).limit(5); +CharBuffer duplicate = buffer.duplicate(); +buffer.position(3).limit(6); +CharBuffer slice = buffer.slice(); + +System.out.println("buffer:" + buffer.position() + "," + buffer.limit()); // buffer:3,6 +System.out.println("duplicate:" + duplicate.position() + "," + duplicate.limit()); // duplicate:2,5 +System.out.println("slice:" + slice.position() + "," + slice.limit()); //slice:0,3 +``` + +### 1.5 直接缓冲区 + +ByteBuffer 支持使用 `allocateDirect` 方法来创建直接缓冲区,示例如下: + +```java +ByteBuffer byteBuffer = ByteBuffer.allocate(100); +``` + + + + + +## 二、Channel + +### 2.1 通道基础 + +Channel 接口的定义如下,其中包含了两个基础方法: + ++ **isOpen()**:判断当前 Channel 是否处于打开状态; ++ **close()**:关闭当前 Channel 。Channel 关闭后,就不能在其上再进行任何 IO 操作,否则将抛出 ClosedChannelException 异常。 + +```java +public interface Channel extends Closeable { + + public boolean isOpen(); + + public void close() throws IOException; +} +``` + +对于常见的文件操作和网络操作都可以直接获取到其对应的 Channel: + +```java +// 获取serverSocketChannel +ServerSocket serverSocket = new ServerSocket(8888); +ServerSocketChannel serverSocketChannel = serverSocket.getChannel(); + +// 获取SocketChannel +Socket socket = new Socket("127.0.0.1", 8888); +SocketChannel socketChannel = socket.getChannel(); + +// 获取FileChannel +FileInputStream fileInputStream = new FileInputStream(new File("path")); +FileChannel fileChannel = fileInputStream.getChannel(); +``` + +### 2.2 文件通道 + +FileChannel 是一个连接到文件的通道,通过该通道可以完成文件的读写。需要注意的是 FileChannel 无法设置为非阻塞模式,因此它总是运行在阻塞模式下。通过 FileChannel 和 Buffer 可以高效地完成文件的拷贝,示例如下: + +```java +try { + FileInputStream inputStream = new FileInputStream(new File("D:\\a.png")); + FileOutputStream outputStream = new FileOutputStream(new File("D:\\b.png")); + FileChannel inChannel = inputStream.getChannel(); + FileChannel outChannel = outputStream.getChannel(); + ByteBuffer buffer = ByteBuffer.allocate(256); + // 从输入channel中读取数据到buffer中 + while (inChannel.read(buffer) > 0) { + // 由写模式切换到读模式 + buffer.flip(); + while (buffer.hasRemaining()) { + //将buffer中的数据写出到输出channel + outChannel.write(buffer); + } + buffer.clear(); + } + inputStream.close(); + outputStream.close(); +} catch (IOException e) { + e.printStackTrace(); +} +``` + +这里的最后我们只需要关闭 Stream 即可,其上的 Channel 也会被关闭,源码如下: + +```java +public void close() throws IOException { + synchronized (closeLock) { + if (closed) { + return; + } + closed = true; + } + // 如果channel不为空,则关闭 + if (channel != null) { + channel.close(); + } + + fd.closeAll(new Closeable() { + public void close() throws IOException { + close0(); + } + }); +} +``` + +### 2.3 Channel To Channel + +在 Java NIO 中,如果两个 Channel 中有一个是 FileChannel,那么可以直接将数据从一个 Channel 传输到另外一个 Channel: + +```java +// 将该通道上的数据直接传送到目标通道 +transferTo(long position, long count, WritableByteChannel target) ; +// 将原通道上的数据直接传送到该通道 +transferFrom(ReadableByteChannel src, long position, long count) +``` + +还是以文件拷贝为例,使用示例如下: + +```java +try { + FileInputStream inputStream = new FileInputStream(new File("D:\\a.png")); + FileOutputStream outputStream = new FileOutputStream(new File("D:\\b.png")); + FileChannel inChannel = inputStream.getChannel(); + FileChannel outChannel = outputStream.getChannel(); + inChannel.transferTo(0,inChannel.size(),outChannel); //使用transferTo实现 + // outChannel.transferFrom(inChannel, 0, inChannel.size()); //使用transferFrom实现 + inputStream.close(); + outputStream.close(); +} catch (IOException e) { + e.printStackTrace(); +} +``` + +### 2.4 Scatter/Gather + +Java NIO 支持 scatter 和 gather 操作: + +- **分散 (scatter)**:把 Channel 中的数据依次写入到多个 Buffer 上。示例如下: + +```java +ByteBuffer buffer01 = ByteBuffer.allocate(32); +ByteBuffer buffer02 = ByteBuffer.allocate(64); +ByteBuffer buffer03 = ByteBuffer.allocate(128); + +ByteBuffer[] buffers = new ByteBuffer[]{buffer01, buffer02, buffer03}; +fileInputStream.getChannel().read(buffers); +``` + +此时 Channel 中的数据会依次写入到 Buffer01, Buffer02, Buffer03 上。Scatter 通常用于固定长度数据的处理,假设一个数据单元由 header,body,footer 三部分组成,并且每部分的长度都是固定的,此时通过 Scatter 操作,每一组数据的 header,body,footer 都会分别固定地写到 Buffer01, Buffer02, Buffer03 上,此时就可以对每个 Buffer 应用不同的处理逻辑: + +![nio_scatter](../pictures/nio_scatter.png) + ++ **聚集 (gather)**:将多个 Buffer 中的数据依次写入到同一个 Channel 上。示例如下: + +```java +ByteBuffer buffer01 = ByteBuffer.allocate(32); +ByteBuffer buffer02 = ByteBuffer.allocate(64); +ByteBuffer buffer03 = ByteBuffer.allocate(128); + +ByteBuffer[] buffers = new ByteBuffer[]{buffer01, buffer02, buffer03}; +fileInputStream.getChannel().read(buffers); +``` + +![nio_gather](../pictures/nio_gather.png) + +### 2.5 Pipe + +Java 提供了 Pipe 类用于在不同线程之间传递数据: + +![nio_pipe](../pictures/nio_pipe.png) + +Pipe 管道可以通过 Pipe 的静态方法 `open()` 来创建: + +```java +Pipe pipe = Pipe.open(); +``` + +创建完成后可以通过其 `sink()` 和 `source()` 方法来创建对应的 SinkChannel 和 SourceChannel: + +```shell +Pipe.SinkChannel sinkChannel = pipe.sink(); +Pipe.SourceChannel sourceChannel = pipe.source(); +``` + +SinkChannel 和 SourceChannel 的使用与基本的 Channel 类似,示例如下: + +```java +Pipe pipe = Pipe.open(); +new Thread(() -> { + try { + Pipe.SinkChannel sink = pipe.sink(); + ByteBuffer buffer = ByteBuffer.allocate(1024); + buffer.put("HelloWorld".getBytes()); + buffer.flip(); + while (buffer.hasRemaining()) { + // 将数据写入SinkChannel + sink.write(buffer); + } + sink.close(); + } catch (IOException e) { + e.printStackTrace(); + } +}).start(); +new Thread(() -> { + try { + Pipe.SourceChannel source = pipe.source(); + ByteBuffer buffer = ByteBuffer.allocate(1024); + // 读取SourceChannel中的数据 + while (source.read(buffer) > 0) { + buffer.flip(); + while (buffer.hasRemaining()) { + System.out.print((char) buffer.get()); //输出:HelloWorld + } + buffer.clear(); + } + source.close(); + } catch (IOException e) { + e.printStackTrace(); + } +}).start(); +``` + + + +## 三、Selector + +### 3.1 创建选择器 + +想要创建一个选择器,可以通过 Selector 类的静态方法 `open()` 来实现: + +```java +Selector selector = Selector.open(); +``` + +### 3.2 注册通道 + +想要将 Channel 和 Selector 配合使用,必须要通过 `register()` 方法将 Channel 注册到 Selector 上,示例如下: + +```java +// 创建ServerSocketChannel +ServerSocketChannel serverChannel = ServerSocketChannel.open(); +// 与 Selector一起使用的Channel必须处于非阻塞模式下 +serverChannel.configureBlocking(false); +serverChannel.bind(new InetSocketAddress(hostname, port)); + +// 注册监听CONNECT事件 +serverChannel.register(selector, SelectionKey.OP_ACCEPT); +``` + +`register()` 方法的第二个参数表示需要监听的事件,它有以下四个可选值: + +```java +//读取事件 +public static final int OP_READ = 1 << 0; +//写入事件 +public static final int OP_WRITE = 1 << 2; +//连接事件 +public static final int OP_CONNECT = 1 << 3; +//接受连接事件 +public static final int OP_ACCEPT = 1 << 4; +``` + +如果你需要监听多个事件,可以使用位操作符进行连接: + +```java +int interestSet = SelectionKey.OP_READ | SelectionKey.OP_WRITE; +``` + +除此之外,你还可以在注册时通过调用 register 的另外一个重载方法来指定附加信息: + +```java +register(Selector sel, int ops, Object att) +``` + +这个附加信息可以在事件触发时通过 SelectionKey 对象再次得到。 + +### 3.3 select + +当你在 Selector 上注册好通道后,就可以使用 `select()` 方法来获取处于就绪状态的事件的集合。示例如下: + +```java +int select = selector.select(); +``` + +select 有以下三个重载方法: + ++ **select()**:持续阻塞,直到至少有一个通道在其注册的事件上处于就绪状态; ++ **select(long timeout)**:与 `select()` 类似,但最长只阻塞 timout 毫秒; ++ **selectNow()**:不会阻塞,如果不存在就绪事件,则直接返回 0。 + +需要注意的是如果是 Ready 操作集发生了变化,select 操作的返回值也可能是 0。这意味着如果某个通道注册的是 `OP_READ` 事件,那么该通道在第一次收到消息时 select 操作返回的值是 1,但是之后收到消息时 select 的返回值则是 0。因此在循环获取消息时,对于 select 返回值的判断应该加上为 0 的情况: + +```java +while (selector.select() >= 0) { + .... +} +``` + +### 3.4 SelectionKey + +当存在注册的事件处于就绪状态时,可以通过 Selector 的 `selectedKeys()` 方法来获取处于就绪状态的事件信息: + +```java +Set selectionKeys = selector.selectedKeys(); +``` + +其返回的是 SelectionKey 的集合,SelectionKey 是对多个属性的综合封装: + +```java +public abstract class SelectionKey { + + // SelectionKey对应的channel + public abstract SelectableChannel channel(); + + // SelectionKey对应的选择器 + public abstract Selector selector(); + + // 当前SelectionKey是否有效 + public abstract boolean isValid(); + + // 取消channel在selector上注册的事件 + public abstract void cancel(); + + // 当前channel注册的事件的合集 + public abstract int interestOps(); + + // 当前channel是否对指定的事件感兴趣 + public abstract SelectionKey interestOps(int ops); + + // 处于就绪状态的事件的合集 + public abstract int readyOps(); + + // Read事件是否就绪 + public final boolean isReadable() {return (readyOps() & OP_READ) != 0;} + + // Write事件是否就绪 + public final boolean isWritable() {return (readyOps() & OP_WRITE) != 0;} + + // Connect事件是否就绪 + public final boolean isConnectable() {return (readyOps() & OP_CONNECT) != 0;} + + // Accept事件是否就绪 + public final boolean isAcceptable() {return (readyOps() & OP_ACCEPT) != 0;} + + // 为SelectionKey指定附加属性,也可以在注册时通过register方法指定 + public final Object attach(Object ob) {return attachmentUpdater.getAndSet(this, ob);} + + // 获取附加属性 + public final Object attachment() { return attachment;} + +} +``` + +## 四、聊天室实例 + +下面以一个群聊的聊天室为例,来展示 Java NIO 三大组件的综合使用,效果如下: + +![nio_chat_group](../pictures/nio_chat_group.png) + + + +### 4.1 群聊服务器 + +群聊服务器的实现如下: + +```java +package chat; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.*; +import java.nio.charset.StandardCharsets; +import java.util.Set; + +public class ChatServer { + + private String hostname; + private int port; + private Selector selector; + private final ByteBuffer rBuffer = ByteBuffer.allocate(1024); + private final ByteBuffer wBuffer = ByteBuffer.allocate(1024); + + ChatServer(int port) { + this("127.0.0.1", port); + } + + ChatServer(String hostname, int port) { + this.hostname = hostname; + this.port = port; + } + + public void start() { + try { + // 创建ServerSocketChannel + ServerSocketChannel serverChannel = ServerSocketChannel.open(); + // 设置为非阻塞模式 + serverChannel.configureBlocking(false); + serverChannel.bind(new InetSocketAddress(hostname, port)); + + // 创建selector + selector = Selector.open(); + // 注册监听CONNECT事件 + serverChannel.register(selector, SelectionKey.OP_ACCEPT); + + // 持续调用select() + while (true) { + selector.select(); + Set selectionKeys = selector.selectedKeys(); + for (SelectionKey selectionKey : selectionKeys) { + // 处理Accept事件 + if (selectionKey.isAcceptable()) { + // 获取ServerSocketChannel + ServerSocketChannel server = (ServerSocketChannel) selectionKey.channel(); + // 通过ServerSocketChannel获取SocketChannel + SocketChannel clientChannel = server.accept(); + clientChannel.configureBlocking(false); + // 注册Read事件 + clientChannel.register(selector, SelectionKey.OP_READ); + System.out.println("欢迎" + clientChannel.socket().getPort() + "加入聊天室!"); + // 处理Readable事件 + } else if (selectionKey.isReadable()) { + handleMessage(selectionKey); + } + } + selectionKeys.clear(); + } + + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭selector后,与之相关的所有资源都会被释放 + try { + selector.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 处理客户端消息 + * + * @param selectionKey 处于Read状态的SelectionKey + */ + private void handleMessage(SelectionKey selectionKey) { + SocketChannel clientChannel = (SocketChannel) selectionKey.channel(); + try { + // 获取来自客户端的消息 + StringBuilder buffer = new StringBuilder(); + while (clientChannel.read(rBuffer) > 0) { + rBuffer.flip(); + buffer.append(StandardCharsets.UTF_8.decode(rBuffer)); + rBuffer.clear(); + } + String msg = buffer.toString(); + // 将消息发送给其他客户端 + broadcastMessage(clientChannel, msg); + } catch (IOException e) { + // 该异常由clientChannel.read(rBuffer)方法抛出,如果出现该异常,则说明clientChannel已经关闭 + // 此时需要调用cancel()取消注册在selector上的事件 + selectionKey.cancel(); + // 在多线程环境下,如果另一个线程正在阻塞地调用select(),因为事件集已经改变, + // 因此需要通过wakeup()让其立刻返回并重新select() + selector.wakeup(); + System.out.println("用户" + clientChannel.socket().getPort() + "退出聊天室!"); + } + } + + /** + * 将客户端发来的消息广播给其他客户端 + * + * @param clientChannel 消息源 + * @param msg 消息 + */ + private void broadcastMessage(SocketChannel clientChannel, String msg) { + try { + // 遍历当前selector上所有channel + for (SelectionKey selectionKey : selector.keys()) { + SelectableChannel channel = selectionKey.channel(); + // 消息不需要转发给ServerSocketChannel和当前客户端自己 + if (selectionKey.isValid() && !(channel instanceof ServerSocketChannel) + && !channel.equals(clientChannel)) { + SocketChannel otherClient = (SocketChannel) channel; + wBuffer.put(("用户" + clientChannel.socket().getPort() + ": " + msg).getBytes()); + while (wBuffer.hasRemaining()) { + wBuffer.flip(); + otherClient.write(wBuffer); + } + wBuffer.clear(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public static void main(String[] args) { + new ChatServer(8888).start(); + } +} + +``` + +### 4.2 客户端实现 + +```java +package chat; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.ClosedSelectorException; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; +import java.nio.channels.SocketChannel; +import java.nio.charset.StandardCharsets; +import java.util.Scanner; +import java.util.Set; + +public class ChatClient { + + private String hostname; + private int port; + private Selector selector; + private final ByteBuffer rBuffer = ByteBuffer.allocate(1024); + private final ByteBuffer wBuffer = ByteBuffer.allocate(1024); + + ChatClient(String hostname, int port) { + this.hostname = hostname; + this.port = port; + } + + public void start() { + try { + // 创建SocketChannel + SocketChannel socketChannel = SocketChannel.open(); + socketChannel.configureBlocking(false); + socketChannel.connect(new InetSocketAddress(hostname, port)); + + // 创建selector + selector = Selector.open(); + // 注册监听CONNECT事件 + socketChannel.register(selector, SelectionKey.OP_CONNECT); + + // 持续调用select + while (true) { + selector.select(); + Set selectionKeys = selector.selectedKeys(); + for (SelectionKey selectionKey : selectionKeys) { + // 处理Connect事件 + if (selectionKey.isConnectable()) { + SocketChannel clientChannel = (SocketChannel) selectionKey.channel(); + // 有可能正处于连接中的状态 + if (clientChannel.isConnectionPending()) { + // 等待连接完成 + clientChannel.finishConnect(); + // 开始监听用户输入 + inputListening(clientChannel); + // 为clientChannel注册上Read + clientChannel.register(selector, SelectionKey.OP_READ); + System.out.println("尊敬的用户" + clientChannel.socket().getLocalPort() + + ", 你已成功加入群聊!"); + } + // 处理Read事件 + } else if (selectionKey.isReadable()) { + handleMessage(selectionKey); + } + } + } + } catch (ClosedSelectorException e) { + // 主动关闭客户端,不做任何处理 + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + selector.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 监听用户来自控制台的输入 + * + * @param clientChannel 客户端Channel + */ + private void inputListening(SocketChannel clientChannel) { + // 要持续监听用户输入,但又不能阻塞主线程,所以需要一个单独的线程来完成 + new Thread(() -> { + Scanner scanner = new Scanner(System.in); + try { + while (scanner.hasNextLine()) { + String input = scanner.nextLine(); + if (!input.isEmpty()) { + if ("exit".equals(input)) { + selector.close(); + return; + } + wBuffer.put(input.getBytes()); + wBuffer.flip(); + while (wBuffer.hasRemaining()) { + clientChannel.write(wBuffer); + } + wBuffer.clear(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + } + + /** + * 处理来自其他客户端的消息 + * + * @param selectionKey 处于Read状态的selectionKey + */ + private void handleMessage(SelectionKey selectionKey) { + try { + SocketChannel channel = (SocketChannel) selectionKey.channel(); + StringBuilder buffer = new StringBuilder(); + while (channel.read(rBuffer) > 0) { + rBuffer.flip(); + buffer.append(StandardCharsets.UTF_8.decode(rBuffer)); + rBuffer.clear(); + } + System.out.println(buffer.toString()); + } catch (IOException e) { + selectionKey.cancel(); + selector.wakeup(); + System.out.println("聊天室服务器已关闭!"); + } + } + + + public static void main(String[] args) { + new ChatClient("127.0.0.1", 8888).start(); + } +} + +``` + + + + + + + diff --git a/pictures/buffer_clear.png b/pictures/buffer_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..6cecb1bd5858fa83c43b9e1dd3f0e4a2047d0245 GIT binary patch literal 3402 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 c?AA7#v+|r&d0id5oj>S;Pt#fX?jg{GMStVHz z2(;V$>ZRX7pl$BJxJ+gna9tu<+5@+pL04TuK%hO%-yxNLdXF;ja4+VvGsZ5^8x!Up z>;H(aPFkTzT~2X-iY_tm1Bwa7mv=qd2U&{Bca7CEgf^|l18%& z;;I(vuuM=8=f)1wuG*$U&@usCQ9r{#iVfHM;A^^m7Ij#)ei ze&X%s+ESdYYliLGu-U7+>`s$OH{P#B?dOVy>-F5sDwF>crIYyohxc=Jb#=?o=mNdr z^bsjgH{mI6lq*t&j|`e^yO4cl+lA{}T~*sY^tG7;j~b>gvI5IT<9 zRS~Ii^T(9u`Z~ckW{AO$O4Q_@{8(-JSfYw^c**ymZC-x|&BWp5qfXxvc3(tgyBvfM zystkwydS1wg0V5VPvh}8d@1>1+ozdJHqO_6YIvQxz1_9vH%=n!p8IcSY%&L=h1!!9 zKVI0R%x@o+?Y{cURlZcvPc`1s|4eGKz#~dYuep92WcShQ<^*U>9+mf)2LXwEPSxln z#x#1Xfi}5yWo2dfWGPVDm9jypf1ry>kYiv8!rrwq+{1Ob(t^5{kUz3cJD|ERNEa8p zHhj5Hmx<0Zk6)K`S-k>&89o{P2rBL~%)dhN1KMT!xrh>x{nI#FzhzVxLG zKl;Gemu8D^$(2PKG4C2kzAH%_=_D^xnPXWWR|+y|;4)@ESPiM;+0FHNQs%68cXGW6 z5%v^mRF9uMlf~6n*$wGE4684!^In=?KG1$#v#4w*giN{RCi7yfw^lc2mQT&`NAon4 z&fVnqrY5uOT(s)WN8T4tC9)-p(xLRO49^{!SrI+21ddZHPNtg8%~pzGoObKZc7e0- zQolbMyO1gA8DM2V*WK1#HVKQqxBLR+AQ;$D1qTL8&txU*3oUTbHvr8e`{Sp&GA+vv zxw3+0StF$|{3;fW!1>5P!U!_%K-y4w66Tq^D#8H~wlU98%N6n@p)VJOgW$#$!O5P0&t$?Zi?@ax*`klk8)6Jq z;rn&QjnTi!e17v0CILjR?lo+h#%96&#ym-8#S4dcbA60?!+|v%aZ0 zIIUqbLYYeAr`DMA)^D?Q{$P{hfHH&~Hq66)07zD#mi;qa*l8hQ_YaF^nJ32eUrRQa znj_-jxXs(@LMKfglU(dBB7dsh^EAA?wn{^Lbxg!b&NHeH4fH_cxE)K!Mk1#9h);3! z`)pY8IR8`X2=g5*CTLnHtxZ`P+N?aaHT8nIvbp_>0+6??!ktJ|*}u=z3Gf}7;hKwM1EZrS8{o66{CDrh2Xh@Mt=Y189a ziP+K~5|by5XpA+V>Z`UUH&AQEc9O!nQ`H5J=wg;{e*K=jBvh40V2F(S)@sFR5pz0_ zpBn1}r~}-X=is%!Ww$)U69Icfs8txYRh5s=N;8{MCHq~xywp9%pnmx#9N~#-&@O4? z|HbfoAJ-g3Qr^9!Zx47D~ViF(F@<5r6T@P!l8Do5n z?;k~?AwzX56M#rK3&i}(VUFou2pB7LdKJ)Bx$(*ztLfmdEv11p6Z<)|C!m3doqnEj ziuHMt28qe=Gh58gV-;j{oE+J3^spd#&=SNUVUdw7x>a!U4%Y3tLYMt!v0%p-F#N$} zv4%25>}(NXhjzPvg%Dq$k5l1|HQvkJc#Ms=Bpc&q&A3_L#f|Fh$TF@v+WG74$MGkM z>y*_OCw>D}M!hMl*mWT9>0>GJ_hgVvS(`#uS zWF`L@mR6dHHu z`1n{VDxOHx)GU0kd0OdQp?L5MupM+gbITSxDo|T1JUcCG3z7u(kIp{T_43?sw3vD# zXz$8}O;t5&hb*^JH#l#N7Xj{%k5fMb8EH}u`Oqrb*mevKf)?wJ@o{j$d$i?Kn`qV_ z`+V_(-@faBjJ_kw26hfUw%S1;Fh-TowUptl4Jmht2?d#p$=9spIG-Liz32fvc(vx& zZ%Q}Rb~2*f*;cRVc5_W<4XaGhu_maTNB|C6*&(H%lsBpW4)6&~VO*uh^PgLQ Q{|=D(WvfeN@Eg(p1EK(E{r~^~ literal 0 HcmV?d00001 diff --git a/pictures/buffer_init.png b/pictures/buffer_init.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc71157f1698f56e13f2589c013a60714eaa559 GIT binary patch literal 3681 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 ZOtHj!k)jJR;M+4qQC<~}dGPere*k8KtA_vp literal 0 HcmV?d00001 diff --git a/pictures/java_nio.pptx b/pictures/java_nio.pptx new file mode 100644 index 0000000000000000000000000000000000000000..b86e79dd4cf0453f47422b9035e06b936cfe98d5 GIT binary patch literal 65274 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 z%0D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 literal 0 HcmV?d00001 diff --git a/pictures/nio_buffer.png b/pictures/nio_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e0b3fc456cd5d2fdd4cde452ee6b59c202e3a9 GIT binary patch literal 8850 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 literal 0 HcmV?d00001 diff --git a/pictures/nio_gather.png b/pictures/nio_gather.png new file mode 100644 index 0000000000000000000000000000000000000000..b19438124c98ab7a10f6aee60dd41dacae621189 GIT binary patch literal 8485 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 literal 0 HcmV?d00001 diff --git a/pictures/nio_scatter.png b/pictures/nio_scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..866975983bd3fdc99952c9db2cbe298e66f1f00f GIT binary patch literal 8434 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