Spark中的易变变量

时间:2016-05-10 00:43:31

标签: java multithreading apache-spark volatile

在Spark中使用多线程时,volatile变量如何工作?

我有一个多线程进程,它使用volatile total变量来跟踪多个线程之间的总和。此变量和正在执行的所有方法都是static。我很好奇这个变量如果有多个火花工人并行执行这个过程的单独实例会如何表现。

他们每个人都有自己的total变量,还是会在工作节点之间共享?

编辑:我想多线程和使用spark的原因是我的程序是一个遗传算法,它是如此流动:将n种群分配给Spark,理想情况下每个工作者有1个种群。每个人口有10-100个人。"对于每个人,通过运行多线程进程100次计算其适应度(每次迭代具有小的参数更改)并返回迭代总数的函数。

多线程进程需要很长时间才能以任何可能的方式加速。

1 个答案:

答案 0 :(得分:0)

好吧,我想我通过结合@vanza的评论和答案here来解决这个问题。

基本上,每个工作节点都有自己的类实例执行多线程进程,因此它们不会重叠。这实际上非常直观,因为如果我的工作节点在不同的机器上,它们就不会在它们之间共享变量。