為什麼NIO的效能比IO好

2021-10-08 11:23:57 字數 365 閱讀 1825

我目前已知的原因只有這1個: 就是由於nio採用緩衝區+通道的方式來傳輸資料, 而不是io包的以位元組或字元為單元傳輸資料, 增加了一次處理資料的位元組數, 而且這種方式更接近於底層作業系統的io方式, 所以速度明顯優於io;

1.io是面向流的,也就是讀取資料的時候是從流上逐個讀取,所以資料不能進行整體以為,沒有緩衝區;nio是面向緩衝區的,資料是儲存在緩衝區中,讀取資料是在緩衝區中進行,所以進行資料的偏移操作更加方便

2,io是阻塞的,當乙個執行緒操作io時如果當前沒有資料可讀,那麼執行緒阻塞,nio由於是對通道操作io,所以是非阻塞,當乙個通道無資料可讀,可切換通道處理其他io

3,nio有selecter選擇器,就是執行緒通過選擇器可以選擇多個通道,而io只能處理乙個

為什麼NIO的效能比IO好

1.io是面向流的,也就是讀取資料的時候是從流上逐個讀取,所以資料不能進行整體以為,沒有緩衝區 nio是面向緩衝區的,資料是儲存在緩衝區中,讀取資料是在緩衝區中進行,所以進行資料的偏移操作更加方便 2,io是阻塞的,當乙個執行緒操作io時如果當前沒有資料可讀,那麼執行緒阻塞,nio由於是對通道操作i...

LSTM為什麼比RNN好

來自知乎大佬towser的回答,比較深刻,也加了點自己的注釋,侵刪 lstm 能解決梯度消失 梯度 是對 lstm 的經典誤解,rnn 中的梯度消失 梯度 和普通的 mlp 或者深層 cnn 中梯度消失 梯度 的含義不一樣。mlp cnn 中不同的層有不同的引數,各是各的梯度 而 rnn 中同樣的權...

NIO與IO多執行緒相比,為什麼使用NIO?

傳統的socket io中,server一直監聽服務埠,當乙個請求連線傳送到server端時,server端獲取當前的socket,然後為socket分配乙個執行緒 通過new方式或者執行緒池獲取乙個可用的執行緒 讓該執行緒獨佔這個socket,執行相關任務 直到任務執行完成後,釋放socket和任...