为什么Java中的FileChannel不是非阻塞的?
我想写一个同时写入多个文件的程序;认为通过使用非阻塞模式,一个线程是可能的。但文件通道不支持非阻塞模式。有人知道为什么吗?
我想写一个同时写入多个文件的程序;认为通过使用非阻塞模式,一个线程是可能的。但文件通道不支持非阻塞模式。有人知道为什么吗?
UNIX 不支持对文件进行非阻塞 I/O,请参阅常规文件的非阻塞 I/O。由于 Java 应该(至少尝试)在所有平台上提供相同的行为,因此 不会实现 。FileChannel
SelectableChannel
但是,Java 7 将包括一个新的异步文件通道
类,该类支持异步文件 I/O,这与非阻塞 I/O 是不同的机制。
通常,只有套接字和管道才能真正通过机制支持非阻塞 I/O。select()
简而言之,大多数操作系统不会将常规文件视为可以阻止的内容 - 因此它们不允许您将其显式设置为非阻止状态。