Java IO线程安全

时间:2013-06-11 00:26:17

标签: java multithreading concurrency io bytebuffer

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

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

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

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

1 个答案:

答案 0 :(得分:0)

几年前我做了一些关于当时正常硬件的测试,MappedByteBuffer比任何其他I / O技术快了约20%。它确实具有写入的缺点,您需要提前知道文件大小。