當前位置:編程學習大全網 - 編程語言 - java面試中nio和io的區別

java面試中nio和io的區別

面向流和面向緩沖區

Java NIO和IO的第壹個最大區別是IO是面向流的,NIO是面向緩沖區的。Java IO是面向流的,這意味著壹次從流中讀取壹個或多個字節,直到所有字節都被讀取,並且它們不會被緩存在任何地方。此外,它不能來回移動流中的數據。如果需要來回移動從流中讀取的數據,首先需要將其緩存在緩沖區中。Java NIO的面向緩沖區的方法略有不同。數據被讀入緩沖區供以後處理,如果需要,可以在緩沖區中來回移動。這增加了處理的靈活性。但是,您需要檢查緩沖區是否包含您需要處理的所有數據。此外,有必要確保當更多數據讀入緩沖區時,緩沖區中未處理的數據不會被覆蓋。

阻塞和非阻塞IO

Java IO的各種流被阻塞。這意味著當壹個線程調用read()或write()時,該線程被阻塞,直到壹些數據被讀取或完全寫入。線程在此期間不能做任何事情。Java NIO的非阻塞模式使得壹個線程發送壹個從某個通道讀取數據的請求,但是只能得到當前可用的數據。如果目前沒有可用的數據,它將壹無所獲。線程可以繼續做其他事情,而不是保持阻塞,直到數據變得可讀。非阻塞寫入也是如此。壹個線程請求向壹個通道寫入壹些數據,但不需要等待它被完全寫入,線程可以同時做其他事情。線程通常利用非阻塞IO的空閑時間在其他通道上執行IO操作,因此現在單個線程可以管理多個輸入輸出通道。

選擇器(選擇器)

Java NIO的選擇器允許單線程監控多個輸入通道。您可以註冊多個通道來使用選擇器,然後使用單線程來“選擇”通道:這些通道已經有可以處理的輸入,或者選擇準備寫入的通道。這種選擇機制使得單線程管理多個通道變得很容易。

NIO和IO如何影響應用程序的設計?

無論您選擇IO工具箱還是NIO工具箱,它都可能影響應用程序設計的以下方面:

1.對NIO或IO類的API調用。

2.數據處理。

3.用於處理數據的線程數。

API調用

當然,使用NIO的API調用看起來與使用IO的不同,但這並不意外,因為它不僅是從InputStream中逐字節讀取的,而且數據必須在處理前讀入緩沖區。

數據處理

使用純NIO設計相比IO設計,數據處理也受到影響。

  • 上一篇:機械專業現在想自學java 還能進去軟件行業嗎
  • 下一篇:軟件工程,女生學適合嗎,普通的二本?
  • copyright 2024編程學習大全網