在Spark的0.5分支的DAGScheduler的源代码中,我注意到runJob
方法是由一个对象同步的:
override def runJob[T, U](
finalRdd: RDD[T],
func: (TaskContext, Iterator[T]) => U,
partitions: Seq[Int],
allowLocal: Boolean)
(implicit m: ClassManifest[U]): Array[U] = {
lock.synchronized {
...
}
}
我的问题是:由于没有其他同步方法,为什么不直接this.synchronized
?是否有必要创建一个新对象作为锁?