// 2023 syntax of scala is too different to reproduce this example import scala.io._ import scala.actors._ import Actor._ object PageLoader { def getPageSize(url: String) = Source.fromURL(url).mkString.length def getCountOfLinks(url: String): int = { val raw = Source.fromURL(url).mkString val count = "".r.findAllIn(raw).length return count } } val urls = List("https://www.amazon.com/", "https://www.twitter.com/", "https://www.google.com/", "https://www.cnn.com/") def timeMethod(method: () => Unit) = { val start = System.nanoTime method() val end = System.nanoTime println("Method took " + (end - start)/1000000000.0 + " seconds.") } def getPageSizeSequentially() = { for(url <- urls) { println("Size for " + url + ": " + PageLoader.getPageSize(url)) } } def getPageSizeConcurrrently() = { def caller = self for(url <- urls) { actor { caller ! (url, PageLoader.getPageSize(url)) } } for(i <- 1 to urls.size) { receive { case (url, size) => println("Size for " + url + ": " + size) } } }