1

我使用MappedByteBuffers通过 volatile 变量实现文件的读取者和写入者之间的线程安全(写入者更新位置,读取者读取写入者的位置)(这是一个文件上传系统,传入的文件是一个流,如果这很重要)。显然,还有更多技巧(稀疏文件,两个映射增长的力量),但这一切都归结为这一点。

我找不到一种更快的方法来写入文件,同时读取相同的文件而不将其完全缓存在内存中(由于剪切大小,我不能这样做)。

是否有任何其他 IO 方法可以保证读者在同一进程中写入字节的可见性?MappedByteBuffer 通过 Java 内存模型间接地做出保证,我希望任何其他解决方案都能做到这一点(阅读:非平台特定等等)。

这是最快的方法吗?我在文档中遗漏了什么吗?

4

1 回答 1

0

几年前,我在当时还不错的硬件上做了一些测试,MappedByteBuffer比任何其他 I/O 技术都快 20%。它确实有一个缺点,就是你需要提前知道文件的大小。

于 2013-06-11T00:30:32.683 回答