首頁  >  文章  >  Java  >  java nio與io的差別

java nio與io的差別

王林
王林原創
2019-11-09 16:57:592312瀏覽

java nio與io的差別

Java中IO與NIO的主要差異,如圖:

java nio與io的差別

1、面向流與面向緩衝

IO是面向流的,NIO是面向緩衝區的。

 Java IO面向流意味著每次從流中讀取一個或多個字節,直到讀取所有字節,它們沒有被緩存在任何地方。

Java NIO的緩衝導向方法略有不同。資料讀取到一個它稍後處理的緩衝區,需要時可在緩衝區中前後移動。

2、阻塞與非阻塞IO

Java IO的各種流是阻塞的。當一個執行緒呼叫read() 或 write()時,該執行緒被阻塞,直到有些資料被讀取,或資料完全寫入。

Java NIO的非阻塞模式,使一個線程從某通道發送請求讀取數據,但是它僅能得到目前可用的數據,如果目前沒有數據可用時,就什麼都不會獲取,而不是保持執行緒阻塞,所以直到資料變的可以讀取之前,該執行緒可以繼續做其他的事情。

3、選擇器

Java NIO的選擇器允許一個單獨的執行緒來監視多個輸入通道,你可以註冊多個通道使用一個選擇器,然後使用一個單獨的執行緒來「選擇」通道:這些通道裡已經有可以處理的輸入,或選擇已準備寫入的通道。這種選擇機制,使得一個單獨的執行緒很容易來管理多個通道。

推薦教學:java教學

以上是java nio與io的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn