Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用可选文件通道进行多文件采集_Java_Nio - Fatal编程技术网

Java 使用可选文件通道进行多文件采集

Java 使用可选文件通道进行多文件采集,java,nio,Java,Nio,我实现了一个多文件收集器输入流,它能够从以前分散的文件段中读取和组合数据。但是,当前版本使用RandomAccessFile和固定大小的ExecutorService,并且有很多CPU开销。我希望避免这些I/O线程,并执行基于单线程选择器的方法。不幸的是,FileChannel(或JDK7的Path.newbytechnel())是不可选择的。有没有一种方法可以用NIO的方式进行数据收集?看看jdk7的异步文件通道。很晚才回答,但为什么它必须是可选的?它具有分散的读取和聚集的写入,并且文件总是为

我实现了一个多文件收集器输入流,它能够从以前分散的文件段中读取和组合数据。但是,当前版本使用RandomAccessFile和固定大小的ExecutorService,并且有很多CPU开销。我希望避免这些I/O线程,并执行基于单线程选择器的方法。不幸的是,FileChannel(或JDK7的Path.newbytechnel())是不可选择的。有没有一种方法可以用NIO的方式进行数据收集?

看看jdk7的异步文件通道。

很晚才回答,但为什么它必须是可选的?它具有分散的读取和聚集的写入,并且文件总是为读取和写入做好准备。那么为什么可以选择呢?

您可以尝试先缩小CPU开销的原因吗?不幸的是,不能。VisualVM在我的Win7上不起作用(将NPE抛出到某个深处)难道你不能循环遍历你的文件通道并使用阻塞读取吗?我在线程中的每个RAF上执行阻塞读取(),然后加入结果。我希望有一种非阻塞的方法来实现它——类似于ServerSocketCannel和SocketCannel。