ByteBuffer和ByteArrayInputStream相同的底层byte []

时间:2017-03-12 14:07:21

标签: java bytearrayinputstream

它是否安全&#34;让ByteArrayInputStreambyte []共享基础template <typename... Ts> using has_common_type = std::experimental::is_detected<std::common_type_t, Ts...>; ,只要他们只读取它?如果我从一个读取/从另一个读取,因为每个都有自己的内部标记/计数器等,是否有可能发生冲突?

2 个答案:

答案 0 :(得分:2)

ByteBuffer.wrapByteArrayInputStream's constructor的来源判断,看起来两个类都会存储您传递它们的数组而不进行复制。似乎两个类都不会修改数组,因此可以安全地在byte[]ByteBuffer的多个实例之间共享相同的ByteArrayInputStream数组。

答案 1 :(得分:1)

这是安全的,有一点需要注意。必须在链之前发生,以确保使用共享byte[]的线程可以在它变为“有效不可变”之前看到对byte[]的最后一次写入。

简单来说,线程需要在设置共享时进行同步,