为什么Java中的FileChannel不是非阻塞的?

时间:2010-10-17 20:55:29

标签: java nio

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

2 个答案:

答案 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)

简而言之,大多数操作系统都不会将常规文件视为可以阻止的内容 - 因此它们不允许您明确将它们设置为非阻塞状态。