Java FloatBuffer.put的绝对版本是线程安全的吗?

Java FloatBuffer.put的绝对版本是线程安全的吗?,java,concurrency,floatbuffer,Java,Concurrency,Floatbuffer,java.nio.FloatBuffer有多种put方法。据我所知,大部分是?它们中的大多数依赖于缓冲区的内部状态,因此它们不是线程安全的。我的问题是,这是否也适用于以下方法 public abstract FloatBuffer put(int index, float f) : 绝对put方法可选操作 在给定索引处将给定的浮点值写入此缓冲区 在我手边的例子中,如果更新不时丢失/覆盖,这是没有问题的,但如果写入发生在完全不同的索引上,这将是致命的,因为内部位置在放入值或类似内容之前被覆盖。该

java.nio.FloatBuffer有多种put方法。据我所知,大部分是?它们中的大多数依赖于缓冲区的内部状态,因此它们不是线程安全的。我的问题是,这是否也适用于以下方法

public abstract FloatBuffer put(int index, float f)
:

绝对put方法可选操作

在给定索引处将给定的浮点值写入此缓冲区

在我手边的例子中,如果更新不时丢失/覆盖,这是没有问题的,但如果写入发生在完全不同的索引上,这将是致命的,因为内部位置在放入值或类似内容之前被覆盖。

该方法是抽象的,这取决于实现:缓冲区对于多个并发线程的使用是不安全的。如果一个缓冲区要由多个线程使用,那么应该通过适当的同步来控制对缓冲区的访问。如果一个线程写入一个绝对位置,而另一个线程读取数据,则至少会出现可见性问题。FloatBuffer可能是一个,因此甚至不能保证此修改是原子性的。它可能由四个字节的更新组成。