【发布时间】:2015-05-11 15:10:46
【问题描述】:
这就是我想要实现的:
固定大小的(单例)数组(比如 1000 个元素)
线程池并行将较小的 (
我们保证池中所有线程的总写入量将写入
写入顺序无关紧要,但它们必须是连续的,例如线程 1 填充数组索引 0-49,线程 3 索引 50-149,线程 2 索引 149-200
是否有线程安全的数据结构来实现这一点?
显然,我需要同步“索引管理器”,它分配给定线程需要写入的数组索引中的位置。但是数组本身是否有一个 Java 数据结构可以用于此,而不用担心线程安全?
【问题讨论】:
-
注意:基于this,我认为常规数组应该可以工作,但我是一个 Java 新手,无法确定
-
因此,写入数组索引提供了与写入非易失性字段相同的内存语义。如果您正在寻找真正的先发生顺序,您将丢失它写入单个数组。
-
@JohnVint- 在这种情况下不关心真正的发生之前。我总是(通过应用程序语义)确保在数据写入之前我不会读取数据。
-
在这种情况下,您对线程安全的担忧应该与写入非易失性字段相同。如果您认为可以这样做,那么写入数组也应该没问题。
-
如果线程总是要在固定索引上写入,那么 IMO 就不需要担心线程安全。请纠正我我错了。
标签: java arrays multithreading concurrency thread-safety