它是否安全"让ByteArrayInputStream
和byte []
共享基础template <typename... Ts>
using has_common_type = std::experimental::is_detected<std::common_type_t, Ts...>;
,只要他们只读取它?如果我从一个读取/从另一个读取,因为每个都有自己的内部标记/计数器等,是否有可能发生冲突?
答案 0 :(得分:2)
从ByteBuffer.wrap
和ByteArrayInputStream
's constructor的来源判断,看起来两个类都会存储您传递它们的数组而不进行复制。似乎两个类都不会修改数组,因此可以安全地在byte[]
和ByteBuffer
的多个实例之间共享相同的ByteArrayInputStream
数组。
答案 1 :(得分:1)
这是安全的,有一点需要注意。必须在链之前发生,以确保使用共享byte[]
的线程可以在它变为“有效不可变”之前看到对byte[]
的最后一次写入。
简单来说,线程需要在设置共享时进行同步,