В исходном коде DAGScheduler из ветви Spark 0.5 я заметил, что метод 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
напрямую?Нужно ли создавать новый объект как блокировку?