NIO简介

nio三大组件

channel,buffer,selector

channel为双向输入输出通道,buffer为缓存,selector为选择器,通过selector来选择线程对出现io操作的channel服务,可有有效的增加线程的工作效率,不用等待某个连接断开才释放线程

bytebuffer

java 复制代码
        //申请空间
        ByteBuffer byteBuffer = ByteBuffer.allocate(100);
        //获取通道
        FileChannel channel = new FileInputStream().getChannel();
        //循环读取
        while (true){
            int read = channel.read(byteBuffer);
            if (read == -1) break;
            //切换读模式
            byteBuffer.flip();
            while (byteBuffer.hasRemaining()){
                byte b = byteBuffer.get();
            }
            //切换写模式
            byteBuffer.clear();
        }

buffer写入数据可以使用

  • 调用 channel 的 read
  • 调用 buffer 自己的 put

buffer读数据有write和get

可以通过这样的方式填充多个buffer,abc为三个buffer对象

java 复制代码
channel.read(new ByteBuffer[]{a, b, c});

同理也可以使用put和write读出写入channel

相关推荐
南尘NCA86661 小时前
企业微信防封防投诉拦截系统:从痛点解决到技术实现
java·网络·企业微信
ONE_PUNCH_Ge1 小时前
Go 语言变量
开发语言
幼稚园的山代王1 小时前
go语言了解
开发语言·后端·golang
晚风残2 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
满天星83035772 小时前
【C++】AVL树的模拟实现
开发语言·c++·算法·stl
怪兽20142 小时前
SQL优化手段有哪些
java·数据库·面试
weixin_456904272 小时前
基于.NET Framework 4.0的串口通信
开发语言·c#·.net
ss2732 小时前
手写MyBatis第107弹:@MapperScan原理与SqlSessionTemplate线程安全机制
java·开发语言·后端·mybatis
Deschen3 小时前
设计模式-原型模式
java·设计模式·原型模式
麦麦鸡腿堡3 小时前
Java的动态绑定机制(重要)
java·开发语言·算法