在Java編程語言中,IO操作是非常常見的操作。它允許我們從文件或網絡流中讀取數據,也允許我們將數據寫入文件或網絡流中。
Java IO被分為兩種:同步IO和異步IO。
同步IO,也被稱為阻塞IO(Blocking IO),指當程序執行IO操作時,線程會一直等待,直到IO操作完成才能執行下一步操作,這種IO操作的代碼稱為Blocking IO代碼。 異步IO,也被稱為非阻塞IO(Non-Blocking IO),指當程序執行IO操作時,線程不會被阻塞,可以先執行其它任務。一旦IO操作完成,操作系統會通知應用程序,這種IO操作的代碼稱為Non-Blocking IO代碼。
BIO(Block IO)是Java IO的一種,它采用同步IO,也就是阻塞IO。當一個線程執行BIO操作時,在數據還沒有讀取或寫入完成之前,這個線程將會一直被阻塞,影響程序的運行效率。
下面是BIO代碼的簡單示例,用于從文件中讀取數據到內存中。 public class BioDemo { public static void main(String[] args) throws IOException { InputStream in = new FileInputStream("data.txt"); byte[] data = new byte[1024]; int len = in.read(data); String str = new String(data, 0, len); System.out.println(str); in.close(); } }
在上述代碼中,程序會一直等待數據的讀取完成,直到數據讀取完成后才會執行下一步操作。
總的來說,BIO在Java IO中是比較簡單和易用的,但它的性能比較低,不能支持高并發,因此被批評為效率低下。因此在Java 1.4之后,Java新添加了NIO(Non-blocking IO)來支持異步IO操作,提高了程序的性能。