• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

异步编程java nio : buffer原理和intBuffer展示demo

武飞扬头像
Rainly2000
帮助3

以下是应用java nio中的 IntBuffer编写的一个示例demo:

public class IntBufferDemo {

    private final static Integer NUM = 5 ;

    public static void main(String[] args) {
        // 分配buffer缓冲区
        IntBuffer buffer = IntBuffer.allocate(1024);
        // 往buffer中写入数据
        for (int i=0;i<NUM;  i){
            buffer.put(i) ;
        }
        // 开始读buffer
        buffer.flip() ;
        while (buffer.hasRemaining()){
            int data = buffer.get() ;
            System.out.print(data   " ");
        }
    }

}
学新通

运行的结果如下:
学新通

那么buffer缓冲区是怎么运行的呢?它的原理是什么?

在以上示例代码中使用到了 nio buffer中的 IntBuffer去进行一个简单的读写操作,通过put方法和get方法对buffer缓冲区中的内容进行更改,在缓冲区中有几个比较重要的属性,具体内容如下:

position: 当前读写指针所在的位置
capacity:缓冲区的容量
limit:指出还有多少数据可以取出或者是还有多少数据可以放入缓冲区中去

缓存切片:

java nio有缓存切片的概念,缓存切片实际上就是对原有缓存的一个映射,相当于是原缓存的视图,并且与原缓存的数据是共享的:代码示例如下:

public class BufferSlice {

    private final static Integer NUM = 9 ;

    public static void main(String[] args) {
        // 创建原缓冲区
        ByteBuffer byteBuffer = ByteBuffer.allocate(10) ;
        for (int i=0;i<=NUM;i  ){
            byteBuffer.put((byte) i) ;
        }
        // 分配一个新的缓存切片 3 --- 6
        byteBuffer.limit(7);
        byteBuffer.position(3) ;
        ByteBuffer slice = byteBuffer.slice() ;

        // 对缓存切片进行改造
        for (int i=0;i<slice.capacity();i  ){
            byte d = slice.get(i);
            d = (byte)(d*10) ;
            slice.put(i,d) ;
        }

        // 从头开始读
        byteBuffer.limit(byteBuffer.capacity());
        byteBuffer.position(0);

        while (byteBuffer.hasRemaining()){
            System.out.print(byteBuffer.get() " ");
        }
    }

}
学新通

代码运行结果如下图所示:

学新通

可以看到,下标3到6的内容被更改

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhfiai
系列文章
更多 icon
同类精品
更多 icon
继续加载