1. 程式人生 > >Java NIO Overview(二)

Java NIO Overview(二)

原文連結:http://tutorials.jenkov.com/java-nio/overview.html,如有侵權,立刪。

Java NIO Overview

  Java NIO包含以下部件:

  1. Channels
  2. Buffers
  3. Selectors

  Java NIO由很多類和元件組成,但是channel和buffer還有selector是Java NIO的核心。還有一些 Pipe 和 FileLock等,這些都是輔助這三個核心的部件,所以不用初學不用可以深入。

 Channel and Buffers

  典型的,所有IO在NIO中都是從channel開始的。Channel有點像Stream。從channel可以讀取資料到buffer中,也可以從buffer中將資料寫到channel中。

                        

  這裡有一些channel和buffer的型別:

  1. FileChannel
  2. DatagramChannel
  3. SocketChannel
  4. ServerSocketChannel
  5. ByteBuffer
  6. CharBuffer
  7. DoubleBuffer
  8. FloatBuffer
  9. IntBuffer
  10. LongBuffer
  11. ShortBuffer

  正如你所見的,channel包括了UDP+TCP、networking IO,和File IO。這些buufer型別覆蓋了你能向IO傳輸的基本資料型別:byte、char、short、int、long、float、double

  Java NIO還有一種型別 MappedByteBuffer,這是和記憶體檔案對映有關。

 Selectors

  selector允許一個執行緒掌控多個channel。如果你的應用有多個connection(channel)時,使用selector是非常便利的。適用於每個連線的流量都很少的情況,例如聊天室。

                        

  為了使用selector,你可以向他註冊多個channel。之後呼叫select()方法,這個方法將會阻塞,直到有一個已經為channel準備好的事件。一旦這個方法返回,執行緒就可以控制其他事件了,例如引入連線,資料接收等