我想编写一个可以同时写入多个文件的程序。认为可以通过使用非阻塞模式在一个线程中实现。但是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/