Future-based Asynchronous I/O
Java 7's AIO provides a Future-based model as an alternative to callbacks, allowing developers to trigger an I/O operation and check its status later.
How it Works
Methods like read() and write() return a Future<Integer>. You can call isDone() to poll, or get() to block until the operation completes. This is useful when the calling thread has other work to do but eventually needs the result.
Java Example
import java.nio.channels.AsynchronousFileChannel;
import java.nio.file.*;
import java.nio.ByteBuffer;
import java.util.concurrent.Future;
public class FutureAioExample {
public static void main(String[] args) throws Exception {
Path path = Paths.get("test.txt");
AsynchronousFileChannel channel = AsynchronousFileChannel.open(path, StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(100);
Future<Integer> res = channel.read(buffer, 0);
// Do something else...
Integer bytesRead = res.get();
System.out.println("Bytes read: " + bytesRead);
}
}
Output
Bytes read: 100
Key Points
- Poll-based asynchronous I/O
- Simpler than CompletionHandler
- Allows mixing async and sync logic
- Part of JSR 203
Comments