对于future异步的思考

来源:互联网 发布:网络公选课答案智慧树 编辑:程序博客网 时间:2024/05/23 07:24

一、Future

用一句话讲:future就是把 同步转异步

简单来讲,Future是这样一种Pattern:你提交一个异步的任务,比如提交到一个threadpool,与此同时拿到一个Future对象,任务的执行是异步的,这时候你可以去做其它的事情,等到异步任务结束的时候,你可通过前面的Future对象拿到异步执行的任务的结果。类似吃饭的时候领餐牌,饭煮好了可以拿餐牌换。

二、问题

Future的get和isDone在task没有做好的时候都会阻塞,既然get会阻塞,为啥又是异步呢?

答案是:

你把任务提交了,这个时候就已经是异步了,你可以回来做自己的事情。然后get的时候阻塞是因为对方没把事情做好,跟异步没关系,万一对方把事情做好了,你去get就直接得到了。

换句话说,你自己写个sleep,也叫阻塞了,但这个时候跟异步没半毛钱关系。isdone是看有没有做好,异步指的是提交任务,这是两码事。

1 0
原创粉丝点击