I am running a job in local mode, configured with local[1] for the sake of the example. The timeline view in Spark UI is as follows:

It shows that there are actually two threads running, though their overlapping is very small. To validate this, I also added some change to Spark's task runner that prints `Thread.currentThread().getId()`, and there indeed prints out two thread ids. 

Is this some behavior from Spark's thread pool to improve performance?

Xiangyu Li