1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

书写更正

This commit is contained in:
yidasanqian 2019-08-07 09:52:52 +08:00
parent 92a9f41acb
commit eef847ea4d

View File

@ -202,13 +202,13 @@ NIO 通过Channel通道 进行读写。
通道是双向的可读也可写而流的读写是单向的。无论读写通道只能和Buffer交互。因为 Buffer通道可以异步地读写。
#### 4)Selectors(选择器)
#### 4)Selector (选择器)
NIO有选择器而IO没有。
选择器用于使用单个线程处理多个通道。因此,它需要较少的线程来处理这些通道。线程之间的切换对于操作系统来说是昂贵的。 因此,为了提高系统效率选择器是有用的。
![一个单线程中Slector维护3个Channel的示意图](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-2/Slector.png)
![一个单线程中Selector维护3个Channel的示意图](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-2/Slector.png)
### 2.3 NIO 读数据和写数据方式
通常来说NIO中的所有IO都是从 Channel通道 开始的。
@ -273,8 +273,7 @@ public class NIOServer {
if (key.isAcceptable()) {
try {
// (1)
// 每来一个新连接不需要创建一个线程而是直接注册到clientSelector
// (1) 每来一个新连接不需要创建一个线程而是直接注册到clientSelector
SocketChannel clientChannel = ((ServerSocketChannel) key.channel()).accept();
clientChannel.configureBlocking(false);
clientChannel.register(clientSelector, SelectionKey.OP_READ);