Gdy I czekać na skutek Scala przyszłości, będzie zachowywał się bardziej jak otrzymać lub jak reakcji, to znaczy nie blokuje nić lub harmonogramów kontynuacją po wyniku, jeżeli dostępny?Czy oczekiwanie na Scala Future blokuje wątek?
7
A
Odpowiedz
15
Tak, w trybie stdlib blokuje wątek i synchronicznie czeka na wyniki. Jeśli chcesz zastosować styl kontynuacji do futures, musisz użyć Akka lub Scalaz, które pozwalają na dodawanie haczyków na kontraktach terminowych prosto z pudełka.
Akka:
val f1 = Future { Thread.sleep(1000); "Hello" + "World" }
val f2 = f1 map { _.length }
f2 foreach println //Done asynchronously and non-blocking
samo z Scalaz:
scala> val f1 = promise {Thread.sleep(1000); "Hello" + "World"}
f1: scalaz.concurrent.Promise[java.lang.String] = [email protected]
scala> val f2 = f1 map{str => str.length}
f2: scalaz.concurrent.Promise[Int] = [email protected]
scala> f2.map(println)
10
res5: scalaz.concurrent.Promise[Unit] = [email protected]
1
Powinno to zablokować bieżący wątek, ale to, czy wątek roboczy jest zablokowany, to zależy.
Powiązane problemy
- 1. Czy NSURLConnection blokuje główny wątek?
- 2. ListenableFuture to scala Future
- 3. Jak debugować Scala Future?
- 4. Java/Scala Future napędzany przez zwrotnego
- 5. Oczekiwanie na wątek C++ 11 do uruchomienia
- 6. Scala - sortowanie na podstawie predykatu wyników Future
- 7. Przewijanie UICollectionView blokuje główny wątek
- 8. NSThread sleepfortimeinterval blokuje główny wątek
- 9. iOS AudioSessionSetActive() blokuje główny wątek?
- 10. NSFileManager removeItemAtPath blokuje główny wątek
- 11. Użycie Scala Future w Playframework?
- 12. Jakie są zalety Twitter Future w stosunku do Scala Future?
- 13. Scala Future z filtrem dla zrozumienia
- 14. Jak dodać czasowego obserwatora do Scala Future?
- 15. Obsługa błędów Scala: Future For Comprehension
- 16. Jak sprawdzić, czy Java Future jest kompletna?
- 17. Dlaczego nie przyszły :: wait() blokuje
- 18. Dlaczego "The Future of the Future" nie wpływają na wynik?
- 19. Śledzenie zdarzeń w UIScrollView blokuje główny wątek. Jakieś poprawki?
- 20. JavaFX - oczekiwanie na zakończenie zadania
- 21. Dlaczego mój asynchroniczny kontroler ASP.NET Web API blokuje główny wątek?
- 22. Czy blokuje się sed?
- 23. DownloadStringAsync blokuje wątek przez 14 sekund przy pierwszym połączeniu
- 24. Scala Future mapTo nie skompilować z powodu brakujących ClassTag
- 25. Oczekiwanie na AsyncStorage.getItem()
- 26. Oczekiwanie na zakończenie zadania
- 27. HtmlUnit: jeden WebClient na wątek - czy wątek jest bezpieczny?
- 28. Oczekiwanie na zakończenie zdarzenia
- 29. Jak anulować oczekiwanie w select() na Windows
- 30. oczekiwanie na obserwowalne