当前位置: 首页 > 面试题库 >

非阻塞文件读取

欧阳俊明
2023-03-14
问题内容

Java中是否有非阻塞文件读取API?如果不是,在C ++中构建一个并通过JNI从Java应用程序中调用它是否明智?


问题答案:

不,[FileChannel](http://download.oracle.com/javase/6/docs/api/java/nio/channels/FileChannel.html)不扩展[SelectableChannel](http://download.oracle.com/javase/6/docs/api/java/nio/channels/SelectableChannel.html)

可能是因为并非所有的操作系​​统都支持它。

Windows确实如此,从理论上讲,您可以编写Windows特定的C ++库,并通过JNI进行调用,但是将其与集成是很多工作java.nio

我宁愿有一个工作线程将文件内容复制到管道中,并在管道的另一端进行非阻塞读取。



 类似资料:
  • 问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI

  • 问题内容: 我需要使用逐行读取文件,但是没有像一次读取一个完整行的方法。有什么解决方案? 问题答案: NIO通常用于直接内存访问或块介导的批量数据传输。它可以做其他事情,但是其他功能与阻塞和非阻塞数据访问有更多关系。 因此,您可能想使用NIO来快速(或以非阻塞方式)获取数据。但是,如果要“逐行读取”,最好在NIO读取可用数据后进行行检测。可以通过在NIO刚刚读取的缓冲区上放置“行读取”外观来轻松实

  • 问题内容: 我正在尝试在Go中创建服务器和客户端,我已经设法与服务器和客户端进行通信。但是我的问题是,在golang中读取的TCP是非阻塞的。我想知道的是,golang中的读取是否有可能像C中的读取一样被阻塞。谢谢 编辑: 这是服务器的源代码: 和我的客户: 问题答案: 可以返回部分数据。从该文档,“如果某些数据是可用的,但不是LEN(P)个字节,读取常规返回什么是可用的,而不是等待更多。” 无论

  • 非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 ServletInputStream.setReadListener 或ServletOutputStream.setWriteListener 方法时将抛出IllegalStateException。为了支持在 Ser

  • Web 容器中的非阻塞请求处理有助于提高对改善 Web 容器可扩展性不断增加的需求,增加 Web 容器可同时处理请求的连接数量。servlet 容器的非阻塞 IO 允许开发人员在数据可用时读取数据或在数据可写时写数据。非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 S

  • 问题内容: 我在获取ncurses的getch()阻止时遇到了一些问题。默认操作似乎是非阻塞的(或者我错过了一些初始化)?我希望它可以像Windows中的getch()一样工作。我尝试了各种版本的 (并非同时全部)。如果可能的话,我宁愿不(明确地)使用any 。一个围绕残培环路(),检查特定的返回值是OK了。 问题答案: curses库是一揽子交易。如果不正确初始化库,您不能仅仅提出一个例程并希望