NIO同步和異步的區別:
同步和異步都是基於應用程序和操作系統。
同步:應用程序直接參與IO讀寫,所以是阻塞的,需要等待IO完成。
異步:IO讀寫交給操作系統。非阻塞。
NIO(同步非阻塞):面向緩衝區,
IO:面向流,(阻塞的 浪費性能)
NIO:主要是通過selector選擇器管理所有的IO事件,服務端爲例:首先需要serverSoketChannel.open();獲得一個channel然後通過channel.configureBlocking(false);設置非阻塞再通過channel.socket();獲取一個Serversocket,然後通過bing()綁定端口,後打開選擇器 selector.open();通過channel.register(selector,key);註冊通道。後通過selector.select();監聽key.
IO流:字節流是讀到一個就返回一個,幾乎所有文件都可以讀取,字符流是隻能讀取字符,讀文本優先用字符流。
字節流(BufferedRead,BufferedWrite)
字符流(BufferedInputStream,BufferedOutStream)