future&promise in java javascript and scala
Opened this issue · 0 comments
tidycoder commented
- future 和 promise的概念有点类似, 区别是: future 是一个只读容器,而promise 是可以set结果的。当你调用一个异步api的方法时,你会得到一个future对象作为尚未完成的计算结果句柄,然后就可以通过get()方法等待计算结果完成并获得结果。那这个异步api是怎么实现的呢:实现方法会立即返回一个future, 并负责一旦计算完成,它就要去完成future。异步计算和完成future是通过Promise或CompletableFuture去实现的。所以它们扮演的角色是:promise是producer/implementor, future是一个consumer/caller
- 在java中,future是异步取得结果的方式,在其他线程中执行计算。当查询时,如果结果没有准备好, 还是会阻塞。在javascript中,Promise不使用新线程,它开启异步操作,当操作完成后,继续往下执行。A JavaScript Promise doesn't use system threads at all. Instead it uses callbacks, executed later in the same thread when the network or other operation is complete.