Mar*_*mus 5 java concurrency executorservice happens-before
阵列元素是否在工人之间正确发布?
假设我有一个大数组(任何原子数据类型,所以没有long或double),
future.get()).工人不会退货.它只是填充我的阵列.换句话说,它保证了前一个工作者的最后一次写入发生在第一次读取下一个工作者之前?
我是否应该(或者为了最佳实践或某事)让第一个工作人员返回数组,即使引用与我已经拥有的引用相同?
[编辑]一些背景:我使用byte数组或short数组,它们代表图像,每个使用多达500,000,000个元素.我对每个元素执行简单的算术运算.
来自包 java.util.concurrent JavaDoc:
java.util.concurrent 及其子包中所有类的方法将这些保证扩展到更高级别的同步。尤其:
在另一个线程中通过 Future.get() 检索结果之后,由 Future 表示的异步计算所采取的操作发生在操作之前。
将 Runnable 提交给 Executor 之前线程中的操作发生在其执行开始之前。对于提交给 ExecutorService 的 Callables 也是如此。
据此,在您的场景中从第二个工作人员访问数组似乎非常安全。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |