NIO通常采用Reactor模式,AIO通常采用Proactor模式。AIO簡化了程序的編寫,stream的讀取和寫入都有OS來完成,不需 要像NIO那樣子遍歷Selector。Windows基于IOCP實現AIO,Linux只有eppoll模擬實現了AIO。
Java7之前的JDK只支持NIO和BIO,從7開始支持AIO。
你說的IO應該指BIO,這種模式需要阻塞線程,一個IO需要一個線程,NIO由一個thread來監聽connect事件,另外多個thread來監聽讀寫事件,帶來性能上很大提高。
基于原生nio的socket通信時一種很好的解決方案,基于事件的通知模式使得多并發時不用維持高數量的線程,高并發的socket服務器的java實現成為現實。不過原生nio代碼十分復雜,無論編寫還是修改都是一件頭疼的事。“屏蔽底層的繁瑣工作,讓程序員將注意力集中于業務邏輯本身”,有需求就有生產力進步,