Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ByteBuffer和ByteArrayInputStream相同的底层字节[]_Java_Bytearrayinputstream - Fatal编程技术网

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[]