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