Java 如果我可以保证我将同时从不同的区域读/写,是否可以同时读/写内存映射文件?

Java 如果我可以保证我将同时从不同的区域读/写,是否可以同时读/写内存映射文件?,java,io,real-time,nio,memory-mapped-files,Java,Io,Real Time,Nio,Memory Mapped Files,我试图在Java中实现对内存映射文件的读/写访问(一个读线程和一个写线程)。我知道a支持并发,所以我想知道是否可以用Java中的内存映射文件做类似的事情。我可以保证我永远不会同时在MemoryMappedBuffer的同一区域读写,换句话说,我将使用读线程在一个区域同时读,使用写线程在另一个区域同时写。运气好吗?如果线程正在访问不同的内存区域,就永远不会有任何问题。必须注意缓冲区的位置、限制和标记,不得同时访问这些值。如果您限制代码只使用基于索引的访问器方法,那么就没有问题了。或者,您可以使用为

我试图在Java中实现对内存映射文件的读/写访问(一个读线程和一个写线程)。我知道a支持并发,所以我想知道是否可以用Java中的内存映射文件做类似的事情。我可以保证我永远不会同时在MemoryMappedBuffer的同一区域读写,换句话说,我将使用读线程在一个区域同时读,使用写线程在另一个区域同时写。运气好吗?

如果线程正在访问不同的内存区域,就永远不会有任何问题。必须注意
缓冲区的位置、限制和标记,不得同时访问这些值。如果您限制代码只使用基于索引的访问器方法,那么就没有问题了。或者,您可以使用为每个线程创建一个缓冲区,以具有独立的线程本地位置和限制

您还可以使用
位置
限制
的组合,并创建强制覆盖原始缓冲区不同区域的缓冲区。它们也将有独立的位置和限制,因此,一旦您确保它们不重叠并且每个缓冲区仅限于一个线程,它们将永远不会有任何竞争条件