1

MappedByteBuffersを使用して、揮発性変数を介してファイルのリーダーとライターの間のスレッド セーフを実現します (ライターは位置を更新し、リーダーはライターの位置を読み取ります) (これはファイル アップロード システムであり、受信ファイルはストリームです)。明らかに、他にもトリックがあります (スパース ファイル、マッピングの 2 乗の増加)。

同じファイルを完全にメモリにキャッシュせずに同時に読み取りながらファイルに書き込む高速な方法を見つけることができません(せん断サイズのために実行できません)。

同じプロセス内でリーダーから書き込まれたバイトへの可視性を保証する IO の他の方法はありますか? MappedByteBuffer は、Java メモリ モデルを介して間接的にその保証を行います。他のソリューションでも同じことを行うことを期待しています (プラットフォーム固有ではないなど)。

これが最速の方法ですか?ドキュメントに何か不足していますか?

4

1 に答える 1

0

何年か前に、当時まともなハードウェアでテストを行いましたが、MappedByteBuffer他のどの I/O 技術よりも約 20% 高速でした。ファイルサイズを事前に知る必要があるという書き込みの欠点があります。

于 2013-06-11T00:30:32.683 に答える