次のように私はRandomFileAccess、のFileChannelとのByteBufferを使用してファイルを読んでいます:ファイルチャネルを使用して将来のデータを読み取る方法は?
RandomAccessFile myFile = new RandomAccessFile("/Users/****/Documents/a.txt", "rw");
FileChannel myInChannel = myFile.getChannel();
ByteBuffer bb = ByteBuffer.allocate(48);
int bytesRead = myInChannel.read(bb);
while (bytesRead != -1) {
// do something
}
myFile.close();
すべてこのコードが正常に動作しています。 しかし、私はFutureを使用してデータを読み取ることができる方法はありますか?
「Future」を介して結果を消費するスレッドから読み込みを開始するスレッドをどのように切り離すかを尋ねていますか?私は 'FileChannel'sがフードの下でブロッキング同期呼び出しをしている可能性が高いので頼みます。そのため、Futureを使用すると非同期操作の方法で何も買われません。 – Gili
FileChannelを介して行うことができるかどうかわかりません。もしそうでなければ、その代案は何ですか? – KayV
申し訳ありませんが、何をしようとしていますか?なぜ未来が必要なのですか?あなたは 'FileChannel'を使って非同期に読み込もうとしていますか?上記の更新されたコメントを読んでください。 – Gili