nio&netty
传说中的靖哥哥
小小程序员一枚
展开
-
AIO:简单代码示例
AIO目前使用并不多,只做代码示例...服务端代码package com.self.netty.aio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousChannelGroup;...原创 2020-01-03 17:38:22 · 405 阅读 · 0 评论 -
NIO(五):源码分析_Select部分
之前已经对register源码进行了分析,注册已经是NIO的核心代码,而Select部分更是重中之重 注册时注册Socket句柄到内存对象中 select()时构造多道线程取对应区间的Socket句柄,线程在处理过程中分为协调线程和工作线程,注意其中协调获取的关系 添加有效的Socket句柄到SelectionKey列表中,通过selectKeys()可以直接获取到,进行后续事件处理 ...原创 2020-01-03 17:36:05 · 213 阅读 · 0 评论 -
NIO(四):源码分析_Register部分
注册,就是将当前Channel注册到Selector上,是NIO源码的核心部分1,Channel.register()部分serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT):注册事件public final SelectionKey register(Selector sel, int ops, Object at...原创 2020-01-03 17:34:34 · 596 阅读 · 0 评论 -
NIO(三):源码分析_初始化部分
1,ServerSocketChannel初始化1.1,ServerSocketChannel serverSocketChannel = ServerSocketChannel.open()ServerSocketChannel.open()public static ServerSocketChannel open() throws IOException { // 先获取...原创 2020-01-03 17:33:53 · 402 阅读 · 0 评论 -
NIO(二):NIO三大核心概念
1,Buffer缓冲区缓冲区本质上就是一个可以读写数据的内存块,底层数据结构是数组,通过一组属性和方法来实现缓冲区数据的读、写及读写转换1.1,Buffer基本类体系结构对于Java基本数据类型,除过 Boolean 外,每一种基本类型的包装类,都存在一种 Buffer 缓冲区与之对应 对于Java对象,可以转换为 Byte 字节,通过 ByteBuffer 进行数据传递 每一种...原创 2020-01-03 17:30:19 · 610 阅读 · 0 评论 -
NIO(一):从一个简单的NIO示例开始
1,NIO和BIO比较 BIO以流的方法处理数据,而NIO以块的方式处理数据;效率提升很多 BIO是阻塞的,NIO是非阻塞的 BIO基于字节流和字符流进行操作,NIO基于Buffer缓冲区和Channel通道进行操作,基于Selector选择器监听通道中的时间,可以使用单线程监听多个通道数据 2,NIO三大核心概念缓冲区(Buffer) 通道(Channel...原创 2020-01-03 17:29:19 · 187 阅读 · 0 评论