欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 同步io和異步

張吉惟1年前7瀏覽0評論

Java 語言中的 I/O 操作分為同步和異步兩種實現方式。同步 I/O 實際指的是阻塞 I/O,即當程序執行 I/O 操作時,程序必須等待 I/O 操作完成后才能進行下一步操作。異步 I/O 與之不同,它不會使程序阻塞等待 I/O 操作完成,而是讓程序繼續執行,直到 I/O 操作完成后再回來處理。

// 同步讀寫
try (FileInputStream fis = new FileInputStream("example.txt");
FileOutputStream fos = new FileOutputStream("copy.txt")) {
byte[] buffer = new byte[1024];
int n;
while ((n = fis.read(buffer)) != -1) {
fos.write(buffer, 0, n);
}
} catch (IOException e) {
e.printStackTrace();
}
// 異步讀寫
try (AsynchronousFileChannel channel = AsynchronousFileChannel.open(path, READ);
ByteBuffer buffer = ByteBuffer.allocate(1024)) {
channel.read(buffer, 0, buffer, new CompletionHandler() {
@Override
public void completed(Integer result, ByteBuffer attachment) {
// TODO
}
@Override
public void failed(Throwable exc, ByteBuffer attachment) {
// TODO
}
});
} catch (IOException e) {
e.printStackTrace();
}

從上面的代碼可以看出同步 I/O 和異步 I/O 的不同之處。對于同步 I/O 操作,代碼在執行讀寫操作時,必須等待讀寫操作完成后才能繼續進行下一步操作。異步 I/O 操作則是調用了 read() 方法后就直接返回了,讀寫操作后續的處理交給了CompletionHandler 的 completed 和 failed 方法。