Future के Basics
In this page:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val future = Future {
// asynchronous computation
result
}
future.map(x => expression)
Future Basics
एक Future[T] एक ऐसी value को represent करता है जो asynchronously उपलब्ध होगी, अपना computation एक implicit ExecutionContext द्वारा manage किए गए अलग thread पर चलाते हुए।
किसी Future के result का synchronously इंतज़ार करने (पूरा होने तक block करने) के लिए Await.result(future, timeout) चाहिए, जो आमतौर पर रोज़मर्रा के async code के बजाय simple scripts, tests, या program के आखिरी step के लिए रखा जाता है। इस तरह किसी Future को चलाने और block करने के लिए scala.concurrent.Await और एक ExecutionContext (आमतौर पर ExecutionContext.global) दोनों को import करना चाहिए।
उदाहरण: Future Basics
import scala.concurrent.{Future, Await}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
object Main extends App {
val future: Future[Int] = Future {
Thread.sleep(50)
21 * 2
}
val result = Await.result(future, 5.seconds)
println(s"Future result: $result")
}
Login to try C/C++/Java/PHP code in the editor
ExecutionContextimport भूल जाना, जिससे यहCannot find an implicit ExecutionContextके साथ fail होता है।- हर जगह
Await.resultcall करना, जो thread को block करता है औरFutureके purpose को हरा देता है। Futureके खत्म होने से पहले program को खत्म होने देना, जिससे इसका output कभी नहीं दिखता।
- Implicit parameters और type classes लचीला behavior प्रदान करते हैं।
- Generics और variance बताते हैं कि types कैसे संबंधित हैं।
lazy val,LazyList, औरFutureदेरी से computation और asynchronous काम को support करते हैं।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: