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方法容許輸出this

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.判斷兩個緩衝區是否相等的方法,代碼以下:code

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;
    }

要知足幾下條件才能算相等。
一、對象要相同
二、剩餘的空間要相同
三、從position到limit區間的數據要相等才能確認數據是否相等。對象

相關文章
相關標籤/搜索