import scala.concurrent._ import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global // Experiment with and without the `blocking` call in this program! object Test extends App { val x = Future.traverse(1 to 30){ i => Future { println("Starting #" + i) blocking { Thread.sleep(2000) } println("Done with #" + i) i } } Await.ready(x, 1 minute) }