Javaの1つのスレッドでFileInputStreamなどの読み取り呼び出しを行い、2番目のスレッドで同時にロードされているバイトを処理する方法はありますか?私はいくつかのことを試しました-私の現在の試みでは、これを実行しているスレッドが1つあります:
FileChannel inStream;
try {
inStream = (new FileInputStream(inFile)).getChannel();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int result;
try {
result = inStream.read(inBuffer);
} ...
そして、ロードされているバイトにアクセスしたい2番目のスレッド。明らかに、最初のスレッドでの読み取り呼び出しは、バッファーがいっぱいになるまでブロックされますが、その時点より前にバッファーにロードされたバイトにアクセスできるようにしたいです。現在、私が試したものはすべてバッファがあり、読み取りが完了するまでバッキング配列は変更されていません-これは、このスレッドのポイントを無効にするだけでなく、データがどこかの中間バッファにロードされ、後で私のバッファにコピーされていることを示唆しています。ダフト。
1つのオプションは、配列への小さな読み取りの束を実行し、後続の読み取りでオフセットを使用することですが、これにより余分なオーバーヘッドが追加されます。
何か案は?