• NIO(一)缓冲区


    I/O的基本概念

    1. 同步和异步的概念:
      所谓的同步就是在发出一个请求的时候,如果没有得到结果,就不返回。即调用者主动等待返回结果。
      所谓的异步:调用之后直接返回结果,一般通过回调函数来处理这个应用。
    2. 阻塞和非阻塞的概念:
      阻塞:在调用没有得到结果之前,当前线程会被挂起。调用线程得到结果之后才会返回。
      非阻塞:不能得到结果之前,改调用不会阻塞住当前的线程。

    缓冲区

    缓冲区其实就是一块数组,然后对这一块数组进行一系列的操作,它包括以下几个常用的方法:

    1分配空间给缓冲区
    2.往缓冲区中添加数据调用put方法
    3.调用flip方法切换为读状态
    4.读取完毕调用clear方法重新设置位置为0。

    常用方法解析

    1.clear方法不清除数据,只是改变当前limit值

      public final Buffer clear() {
            position = 0;
            limit = capacity;
            mark = -1;
            return this;
        }
    

    2.flip方法允许输出

     public final Buffer flip() {
            limit = position;
            position = 0;
            mark = -1;
            return this;
        }
    

    3.rewind方法使posotion方法置为0

     public final Buffer rewind() {
            position = 0;
            mark = -1;
            return this;
        }
    

    4.判断两个缓冲区是否相等的方法,代码如下:

        public boolean equals(Object ob) {
            if (this == ob)
                return true;
            if (!(ob instanceof CharBuffer))
                return false;
            CharBuffer that = (CharBuffer)ob;
            if (this.remaining() != that.remaining())
                return false;
            int p = this.position();
            for (int i = this.limit() - 1, j = that.limit() - 1; i >= p; i--, j--)
                if (!equals(this.get(i), that.get(j)))
                    return false;
            return true;
        }
    

    要满足几下条件才能算相等。
    1、对象要相同
    2、剩余的空间要相同
    3、从position到limit区间的数据要相等才能确认数据是否相等。

  • 相关阅读:
    android xml 布局错误
    java int与integer的区别
    android html.fromHtml 用例
    Android 手势操作识别
    android android 判断是否滑动
    Android 通过 Intent 传递类对象或list对象
    android 学习JSON
    android 解决ListView点击与滑动事件冲突
    关于android的日志输出&LogCat
    android ListView 属性
  • 原文地址:https://www.cnblogs.com/master-image/p/7943737.html
Copyright © 2020-2023  润新知