Java ByteBuffer和ByteArrayInputStream相同的底层字节[]
让Java ByteBuffer和ByteArrayInputStream相同的底层字节[],java,bytearrayinputstream,Java,Bytearrayinputstream,让ByteBuffer和ByteArrayInputStream共享底层byte[]是否“安全”,只要它们只从中读取?如果我从其中一个然后从另一个读取/获取,因为每个都有自己的内部标记/计数器等,是否存在冲突的可能性 从and的来源判断,这两个类似乎都将存储您传递给它们的数组,而不进行复制。这两个类似乎都不会修改数组,从而可以安全地跨ByteBuffer和ByteArrayInputStream的多个实例共享相同的字节[]数组。这是安全的,但需要注意一点。必须有一个before-before链,
ByteBuffer
和ByteArrayInputStream
共享底层byte[]
是否“安全”,只要它们只从中读取?如果我从其中一个然后从另一个读取/获取,因为每个都有自己的内部标记/计数器等,是否存在冲突的可能性 从and的来源判断,这两个类似乎都将存储您传递给它们的数组,而不进行复制。这两个类似乎都不会修改数组,从而可以安全地跨ByteBuffer
和ByteArrayInputStream的多个实例共享相同的字节[]
数组。这是安全的,但需要注意一点。必须有一个before-before链,以确保使用共享的字节[]
的线程可以看到对字节[]
的最后一次写入,直到它变为“有效不可变”
简单地说,在设置共享时线程需要同步,OP没有询问多线程,但也许他们应该这样做。嗯。。。在我看来。。。“安全”包括各种安全,包括螺纹安全。当我读到这篇文章时,他们正在询问线程安全等问题。我在其中使用的代码部分是顺序的,但感谢大家提醒我:线程安全。我最初的意思仅仅是以某种方式修改底层的byte[]