NIO BIO

Java I/O 以及多线程

BIO

阻塞式同步I/O
可以通过线程池来增加吞吐量
(将单线程改为多线程可以有效增加吞吐量)
(或者可以对每一个socket请求设置一个线程,但是线程的创建和销毁需要时间,所以不会导致QPS的显著增加)

NIO

非阻塞式同步I/O

NIO的三大组件

1.Channel:包括FileChannel, DatagramChannel, SocketChannel以及SeverSocketChannel.
2.Buffer:是一个缓存区,本质是一个数组,向Channel读取和写入数据.
ByteBuffer, charBuffer,shortBuffer,IntBuffer. 八大基本数据类型
3.Selector

分为三大类:
MapperByteBuffer,HeapByteBuffer(JVM堆内存),DirectByteBuffer(JVM进程内存)

状态变量:
capacity:最大容量
position:当前读写位置
limit:读写限制
Mark:标记position位置,在下一次读写时position的位置.便于重复读

flip读写操作:
clear清楚操作:

 ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
        System.out.println(byteBuffer);
        byteBuffer.putInt(1);
        byteBuffer.putInt(2);
        byteBuffer.putInt(3);

        System.out.println(byteBuffer);
        byteBuffer.flip();
        System.out.println(byteBuffer);
        System.out.println(byteBuffer.remaining());
        byteBuffer.getInt();
        byteBuffer.getInt();
        byteBuffer.getInt();
        System.out.println(byteBuffer);
        byteBuffer.clear();
        System.out.println(byteBuffer);
        }

只用ByteBuffer和Channel只能保证QPS 2.0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值