我使用MappedByteBuffers通过易失性变量(写入器更新位置,读取器读取写入器位置)来实现文件的读取器和写入器之间的线程安全(这是一个文件上传系统,传入的文件是一个流,如果这很重要的话)。显然,还有更多的技巧(稀疏文件,两个映射增长的能力),但这一切都归结于此。
我找不到一种更快的方法来写入文件,同时同时读取相同的文件,而不将它们完全缓存在内存中(由于切变大小,我无法做到这一点)。
有没有其他的IO方法可以保证同一进程中读写字节的可见性?MappedByteBuffer通过Java Memory Model间接地提供了保证,我希望任何其他解决方案都能做到这一点(请阅读:不特定于平台等)。
这是最快的方法吗?我是不是在文档里漏掉了什么?
发布于 2013-06-11 08:30:33
几年前,我在当时还不错的硬件上做了一些测试,MappedByteBuffer比任何其他I/O技术都快大约20%。对于编写来说,它确实有一个缺点,那就是你需要事先知道文件的大小。
https://stackoverflow.com/questions/17034844
复制相似问题