【NIO第二篇】Java NIO(New IO /Non Blocking IO)

NIO学习完结撒花★,°:.☆( ̄▽ ̄)/$:.°★

文章目录

  • 字符集Charset
  • NIO可以非阻塞式网络通信
    • 选择器的作用
    • 可以换成非阻塞模式的通道
    • NIO阻塞式网络通信
      • 示例1
      • 示例2
    • 非阻塞式
      • 选择器的ops参数
    • 非阻塞示例
      • 1
      • 2 NIO_DatagramChannel
      • 3 管道Pipe

字符集Charset

编码:字符串->字节数组
解码:字节数组->字符串
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第1张图片

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第2张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第3张图片

NIO可以非阻塞式网络通信

使用NIO完成网络通信的核心:通道(负责连接)、缓冲区(负责存取)、选择器(负责监控)

选择器的作用

选择器:监控通道的IO状况。通道都会注册到选择器上。客户端发送给服务端的数据完全准备就绪以后,选择器才将任务分配到服务端的一个或多个线程上,再运行。
选择器是SelectableChannel的多路复用器,用于监控SelectableChannel的IO状况。
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第4张图片

可以换成非阻塞模式的通道

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第5张图片
如图,没有FileChanne,FileChannel不能换成非阻塞模式。

NIO阻塞式网络通信

示例1

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第6张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第7张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第8张图片

示例2

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第9张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第10张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第11张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第12张图片

非阻塞式

选择器的ops参数

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第13张图片

非阻塞示例

1

【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第14张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第15张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第16张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第17张图片
在这里插入图片描述

2 NIO_DatagramChannel

发送【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第18张图片
接收
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第19张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第20张图片

3 管道Pipe

管道是单向的
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第21张图片
【NIO第二篇】Java NIO(New IO /Non Blocking IO)_第22张图片

你可能感兴趣的:(Java基础,nio,网络通信,java)