维基百科:在计算机科学里,future、promise和delay指的是在某些并发编程语言里用于同步的构造。它们描述一个为最初未知的结果充当代理的对象,通常因为它的值的计算还是不完整的。
术语future、promise和delay经常可交换地使用,虽然接下来将对待在future和promise之间一些用法上得不同点。具体来说,当用法有区别时,future是只读变量的占位符视图,然而promise是可写的,设置future值的单赋值容器。尤其,future可能定义为不指定具体的设置它的值的promise,和不同的合适的promises可以设置给定的future的值,尽管对于给定的future这只能做一次。在其他情况下future和promise一起创建并且彼此关联:future是值,promise是设置值 —— 本质上是一个异步函数(promise)的返回值(future)的函数。设置future的值也被称为resolving(解析)、fulfilling(实现)或者binding(绑定)它。
实现:Java通过java.util.concurrent.Future、JavaScript从ECMAScript6起等。
非标准库基于futures的实现:
- For JavaScript:
- Cujo.js's when.js provides promises conforming to the Promises/A+1.1 specification.
- The Dojo Toolkit supplies both promises and Twisted style Deferreds
- MochiKit MochKit.Async inspired by Twisted's Deferreds
- jQuery's Deferred Object is based on the CommonJS Promises/Adesign.
- Angularjs
- node-promise
- Q by Kris Kowal, conforms to Promises/A+ 1.1.
- RSVP.js also conforms to Promises/A+ 1.1.
- YUI's Promise class conforms to the Promises/A+ 1.0 specification.
- Bluebird by Petka Antonov
- See Promise/A+'s list for more implementations based on the Promise/A+ design.
- For Java: JDeferred provides Deferred/Promise API and behavior similar to JQuery.Deferred object
- For Java: Guava的com.google.common.util.concurrent.Futures
- For Java: Netty的io.netty.channel.ChannelFuture 和 io.netty.channel.ChannelPromise
暂时整理这部分,后续具体的库和详细的分析留待补充。
相关推荐
### Scala Futures and Promises 实践入门 #### 凤凰木 #### September 14, 2018 在本文档中,我们将通过一系列实例来探讨Scala中的`Future`和`Promise`的概念,并与Java中的多线程技术进行对比。这些概念是函数式...
本文将深入探讨`Concurrent Ruby`中的核心概念和组件,包括Agents、Futures、Promises和Thread Pools,以及Supervisors,帮助你更好地理解和运用这些工具。 一、Agents 在`Concurrent Ruby`中,Agent是一种线程安全...
这些标签暗示了压缩包中的内容可能包括基础语法、类和对象、模式匹配、高阶函数、集合操作、 Actors模型、 Futures和Promises等常见Scala编程主题。 压缩包内的文件名为"scalaDemo",这可能是一个单一的源代码文件...
7. ** Futures和Promises**:Scala提供了Futures和Promises,用于异步编程,它们可以帮助处理回调地狱,提高代码的可读性和可维护性。 8. ** Shapeless**:Shapeless是一个元编程库,为处理泛型提供高级工具,如...
5. ** Futures 和 Promises**:Scala 2.10引入了Futures和Promises,为异步编程提供了一种强大的机制。它们允许在非阻塞环境中管理复杂的交互。 6. ** Scalactic 和 ScalaTest**:2.10.6版本通常与这些测试框架一起...
futures和promises是Scala中处理异步操作的抽象。futures代表一个可能尚未完成的异步计算过程,而promises是一个可以被一个或多个futures所观察的容器。通过使用这些抽象,开发者可以在不阻塞当前线程的情况下执行...
9. ** Futures 和 Promises**:Scala提供了异步编程的支持,Futures表示一个可能还未完成的计算结果,Promises则用来创建Futures。 10. **类型类**:类型类是一种设计模式,允许在运行时为类型添加功能,而不必使用...
1. **多线程和并发支持**:folly提供了线程池、锁free的数据结构和异步I/O模型,如Futures和Promises,便于实现高效的并发编程。 2. **内存管理**:folly包含了一套智能指针和内存池,可以优化内存分配和释放,减少...
3. **并发和并行性**:增加了 Futures 和 Promises,为编写并发和并行程序提供了便利。 4. **宏支持**:引入了宏,允许开发者在编译时生成代码,提高了代码生成和元编程的能力。 Scala-2.11.x系列是后续的版本,此...
Scala 2.11.8支持异步编程模型,如 Futures 和 Promises,这对于构建响应式的、非阻塞的应用程序至关重要。 10. 性能提升: Scala 2.11.8对内存管理和垃圾收集进行了优化,提升了大规模并发场景下的性能。 总的...
- Futures和Promises:Futures用于异步计算,而Promises用于创建Futures,两者结合能有效地处理并发任务。 5. **集合库** - 集合API:Scala的集合库强大且高效,包含各种数据结构如List、Set、Map和ArrayBuffer,...
此外,Akka还支持Futures和Promises,使得异步编程变得更加简单和直观。 其次,Akka的路由机制是其强大功能的一部分。它可以将消息智能地分发到一组子Actor中,例如广播、轮询或根据特定规则选择接收者。这种路由...
在Scala中,可以使用 Futures 和 Promises 来处理异步操作,或者利用Scala集合库的并行操作,如par方法,轻松地将顺序代码转换为并行代码,从而充分利用多核处理器的计算能力。 压缩包中的两个PDF文件"Scala程序...
14. ** Futures和Promises**:用于异步编程,Futures代表一个将来完成的计算结果,Promises则用于发起异步操作。 15. **类型系统高级特性**:包括类型参数的上下界、协变和逆变、路径依赖类型等,使得Scala能够实现...
2. 响应式编程:通过 Futures 和 Promises 支持异步编程,简化并发处理。 3. 不可变数据结构:Scala 提供了丰富的不可变集合,确保了数据的安全性。 此外,Scala还具有以下特点: 1. 类与对象统一:Scala中一切皆为...
书中可能详细讲解了Scala如何利用JVM的并行能力,比如使用 Futures 和 Promises 实现异步编程,通过 Actors 实现消息驱动的并发,以及如何利用 Scala 的并发原语如 `Await`、`Promise` 和 `Future` 来编写高效、安全...
在Scala中,异步编程通常通过 Futures 和 Promises 进行,但RxJava提供了一种不同的模式,即观察者模式。它将事件源(Observable)和事件订阅者(Observer)之间的交互抽象出来,形成了一种反应式编程风格。这种风格...
4. **并发编程**:Scala的Actor模型、Futures和Promises,以及如何使用它们构建并发应用程序。 5. **JVM多核编程**:线程管理和同步、锁与条件变量、非阻塞并发、Java内存模型(JMM)以及性能优化技巧。 6. **Akka...