2.3 NIO編程
在介紹NIO編程之前,我們首先需要澄清一個概念:NIO到底是什么的簡稱?有人稱之為New I/O,因為它相對于之前的I/O類庫是新增的,所以被稱為New I/O,這是它的官方叫法。但是,由于之前老的I/O類庫是阻塞I/O,New I/O類庫的目標就是要讓Java支持非阻塞I/O,所以,更多的人喜歡稱之為非阻塞I/O(Non-block I/O),由于非阻塞I/O更能夠體現(xiàn)NIO的特點,所以本書使用的NIO都指的是非阻塞I/O。
與Socket類和ServerSocket類相對應,NIO也提供了SocketChannel和ServerSocketChannel兩種不同的套接字通道實現(xiàn)。這兩種新增的通道都支持阻塞和非阻塞兩種模式。阻塞模式使用非常簡單,但是性能和可靠性都不好,非阻塞模式則正好相反。開發(fā)人員一般可以根據(jù)自己的需要來選擇合適的模式,一般來說,低負載、低并發(fā)的應用程序可以選擇同步阻塞I/O以降低編程復雜度,但是對于高負載、高并發(fā)的網(wǎng)絡應用,需要使用NIO的非阻塞模式進行開發(fā)。
下面的小節(jié)首先介紹NIO編程中的一些基本概念,然后通過NIO服務端的序列圖和源碼講解,讓大家快速地熟悉NIO編程的關鍵步驟和API的使用。如果你已經(jīng)熟悉了NIO編程,可以跳過2.3節(jié)直接學習后面的章節(jié)。
推薦閱讀