1、Java IO和NIO之間第一個區別是,IO是面向流的,NIO是面向緩沖區的。
Java IO面向流意味著每次都能從流中讀取一個或多個字節。從流中讀取多少字節完全取決于程序員。這些字節無法緩存到任何地方;也就是說,你不能從流中前后移動數據。如果你真的需要移動數據,你需要先在緩沖區緩存這些數據。
Java NIO對Buffer的看法稍有不同。當數據被讀取到buffer中時,buffer將在以后進行處理。如果您需要,您可以在buffer中移動數據;這使程序員在處理時更加靈活。但是,您必須檢查buffer中是否包含您需要處理的所有數據。此外,您必須確保讀取數據到達buffer時,您不能覆蓋未處理的數據。
阻塞與非阻塞IO
2、Java IO中的各種流被堵塞,Java NIO是非阻塞模式保證線程要求從channel中讀取數據。
Java IO中的各種流被堵塞,也就是說,當調用read()方法和write()方法時,線程會被堵塞,直到數據被讀取或完全寫入。在此期間,處理流的線程將無法完成。
Java NIO非阻塞模式保證線程要求從channel中讀取數據,直到此時channel才能使用,或者如果此時沒有數據可用,就什么也不做。而不是保存阻塞,直到數據可以讀取,這里線程可以做其他事情。
以上就是java io和nio的區別分析,主要體會在面向的對象、阻塞方面的不同,感興趣的小伙伴也可以找一些實例進行練習。更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。