Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android開發進階之NIO非阻塞包(一)

Android開發進階之NIO非阻塞包(一)

編輯:中級開發

對於android的網絡通訊性能的提高,我們可以使用Java上高性能的NIO (New I/O) 技術進行處理,NIO是從JDK 1.4開始引入的,NIO的N我們可以理解為Noblocking即非阻塞的意思,相對應傳統的I/O,比如Socket的accpet()、read()這些方法而言都是阻塞的。

  NIO主要使用了Channel和Selector來實現,Java的Selector類似Winsock的Select模式,是一種基於事件驅動的,整個處理方法使用了輪訓的狀態機,如果你過去開發過SymBian應用的話這種方式有點像活動對象,好處就是單線程更節省系統開銷,NIO的好處可以很好的處理並發,對於android網游開發來說比較關鍵,對於多點Socket連接而言使用NIO可以大大減少線程使用,降低了線程死鎖的概率,畢竟手機游戲有UI線程,音樂線程,網絡線程,管理的難度可想而知,同時I/O這種低速設備將影響游戲的體驗。

  NIO作為一種中高負載的I/O模型,相對於傳統的BIO (Blocking I/O)來說有了很大的提高,處理並發不用太多的線程,省去了創建銷毀的時間,如果線程過多調度是問題,同時很多線程可能處於空閒狀態,大大浪費了CPU時間,同時過多的線程可能是性能大幅下降,一般的解決方案中可能使用線程池來管理調度但這種方法治標不治本。使用NIO可以使並發的效率大大提高。當然NIO和JDK 7中的AIO還存在一些區別,AIO作為一種更新的當然這是對於Java而言,如果你開發過Winsock服務器,那麼IOCP這樣的I/O完成端口可以解決更高級的負載,當然了今天Android123主要給大家講解下為什麼使用NIO在android中有哪些用處。

   NIO我們分為幾個類型分別描述,作為Java的特性之一,我們需要了解一些新的概念,比如ByteBuffer類,Channel,SocketChannel,ServerSocketChannel,Selector和SelectionKey。有關具體的使用,Android開發網將在明天詳細講解。網友可以在android SDK文檔中看下java.nio和Java.nio.channels兩個包了解。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved