Scala
Futures and Async
Asynchronous computation with Future and ExecutionContext.
By EZ4Code Team
futureasyncconcurrency
Code
import scala.concurrent.{Future, ExecutionContext}
import scala.concurrent.duration._
import ExecutionContext.Implicits.global
def fetchUser(id: Int): Future[String] = Future {
Thread.sleep(100)
s"user-$id"
}
// Compose futures
val future = for {
u1 <- fetchUser(1)
u2 <- fetchUser(2)
} yield s"$u1 and $u2"
// Callback
future.onComplete {
case util.Success(v) => println(v)
case util.Failure(e) => println(s"Error: $e")
}
// Block (avoid in production)
val result = scala.concurrent.Await.result(future, 5.seconds)Explanation
Future represents an async result. Use for-comprehensions to chain futures sequentially; ExecutionContext is the thread pool. Avoid Await.result in production code — use callbacks or Akka/Pekko for streaming. Scala 3 also supports direct-style async/await.
More Scala Snippets
Pattern Matching
Destructure values and match cases in Scala.
Case Classes
Immutable data classes with auto-generated equals/hashCode/toString.
Collections Operations
Functional collection operations: map, filter, fold, groupBy.
Traits and Mixins
Compose behaviors using traits with default implementations.
Implicits (Given/Using in Scala 3)
Type-class derivation and context passing via implicits.
Akka Actors (Pekko)
Message-passing concurrency with the actor model.