Esistono differenze concettuali, funzionali o meccaniche tra un futuro di Scala e un futuro di Java? Concettualmente non riesco a vedere alcuna differenza in quanto entrambi mirano a fornire un meccanismo per il calcolo asincrono.Quali sono le differenze tra un futuro di Scala e un futuro di Java
risposta
L'inconveniente principale di java.util.concurrent.Future
è il fatto che non è possibile ottenere il valore senza bloccare.
Infatti, l'unico modo per recuperare un valore è il metodo get
, che (quoting from the docs)
Waits se necessario, per il calcolo di compilare, quindi recupera il suo risultato.
Con scala.concurrent.Future
si ottiene invece un vero e proprio calcolo non bloccante, come è possibile allegare callback per il completamento (successo/insuccesso) o semplicemente mappa su di esso e catene multiple Futures insieme in modo monadica.
Per farla breve, scala's Future consente il calcolo asincrono senza bloccare più thread del necessario.
Java Future: Entrambi rappresentano risultato di un calcolo asincrono, ma di Java Future richiede che si accede al risultato tramite un blocco ottenere method.Although è possibile chiamare isDone per scoprire se un Java futuro ha completato prima di chiamare get, evitando così qualsiasi blocco, è necessario attendere il completamento di Java Future prima di procedere con qualsiasi calcolo che utilizza il risultato.
Scala Future: è possibile specificare le trasformazioni su uno Scala futurose abbia completato o risultati not.Each trasformazione in una nuova futuro rappresenta il risultato asincrona dell'originale Future trasformato dalla funzione. Ciò consente di descrivere i calcoli asincroni come una serie di trasformazioni.
Il futuro di Scala spesso elimina, la necessità di ragionare su dati e blocchi condivisi. Quando invochi un metodo Scala, esegue un calcolo "mentre aspetti" e restituisce un risultato. Se quel risultato è un futuro, il futuro rappresenta un altro calcolo da eseguire in modo asincrono spesso da un thread completamente diverso.
Esempio: Invece di bloccare, quindi continuare con un altro calcolo, è possibile mappare il prossimo calcolo sul futuro.
Dopo futuro completerà dopo dieci secondi:
val fut = Future { Thread.sleep(10000);21+21}
Mapping questo futuro con una funzione che incrementa di uno produrrà un altro futuro.
val result = fut.map(x=>x+1)
- 1. Quali sono i vantaggi di un futuro di Twitter su un futuro di Scala?
- 2. Converti futuro scala per il futuro del Java
- 3. convertiamo il futuro di Scala nel futuro di Twitter
- 4. Quali sono le differenze tra Int e Integer in Scala?
- 5. Quali sono le differenze tra un UIView e un CALayer?
- 6. Quali sono le differenze tra un compilatore e un linker?
- 7. Conversione Metodo Scala @suspendable in un futuro
- 8. Scala Futuro [Opzione [T]] Un imballaggio
- 9. Quali sono le somiglianze e le differenze essenziali tra Scala e Gosu (correlate a Java)?
- 10. Quali sono le differenze tra $ {} e # {}?
- 11. Quali sono le differenze in JIT tra Java e .Net
- 12. Differenze tra le enumerazioni scala e java
- 13. Quali sono/sono le principali differenze tra Flink e Storm?
- 14. Opzione Scala [Futuro [T]] a Futuro [Opzione [T]]
- 15. mittente all'interno di un futuro
- 16. Quali sono le differenze tra `String` e` str` di Rust?
- 17. Quali sono le differenze tra slice e partizioni di RDD?
- 18. Futuro [Opzione [Futuro [Opzione [Booleano]] Semplificando Futures e Opzioni?
- 19. Quali sono/sono le differenze tra MSBuild e TFSBuild
- 20. Quali sono le differenze di utilizzo tra size_t e off_t?
- 21. Futuro e stabilità di IronPython
- 22. Mappa l'eccezione di un futuro fallito
- 23. Quali sono le differenze tra l'inferenza di tipo di Scala e C++ 11?
- 24. Quali sono le differenze tra le classi Helper e Utility?
- 25. Quali sono le differenze tra ibm jdk e oracle jdk?
- 26. Quali sono le differenze tra mappatura, associazione e analisi?
- 27. Quali sono le differenze tra JSP, PHP, HTML5 e javascript?
- 28. Quali sono le differenze tra JSP e Facelets?
- 29. Quali sono le differenze tra & e &&, | e || in R?
- 30. Quali sono le differenze tra le capacità di calcolo CUDA?
Forse sarebbe più preciso dire che scala ha un api più conveniente per interagire con Futures e callback in sospeso. Non sono sicuro di come sia il confronto con Java8 CompletableFuture, anche se quello non viene restituito dagli esecutori standard. – tkruse