我想编写一个可以同时写入多个文件的程序。认为可以通过使用非阻塞模式在一个线程中实现。但是FileChannel不支持非阻塞模式。有人知道为什么吗?

最佳答案

UNIX不支持文件的非阻塞I/O,请参见Non-blocking I/O with regular files。由于Java应该(至少尝试)在所有平台上提供相同的行为,因此FileChannel不实现SelectableChannel

但是,Java 7将包括一个新的 AsynchronousFileChannel 类,该类支持异步文件I/O,这是与非阻塞I/O不同的机制。

通常,只有套接字和管道才通过select()机制真正支持非阻塞I/O。

关于java - 为什么Java中的FileChannel不是非阻塞的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3955250/

10-10 02:47