同步编程 vs 异步编程

同步的编程模型

简单描述:
一个线程获得了一个任务,然后去执行这个任务,
当这个任务执行完毕后,才能执行接下来的另外一个任务。
注意:
这个线程不能将当前的任务放置在一边,转而去做另外一个任务。

单线程的情况:

线程依次执行任务

一个线程,相当于一个人,这个人做完一个任务,再去做下一个任务。

这个人有两个任务,第一个是吃水果,第二个是写文章。
那么这个人是先去吃一堆水果,然后再去写文章。

多线程的情况:

多个线程,每个线程依次处理它的任务

异步编程模型

它和同步的编程模型有很大的区别:
一个线程中执行一堆任务,
这个线程可以自由的保存,恢复任务的状态。
也就是,它有能力穿插的执行任务。

单线程的情况:

一个线程,穿插的执行任务

一个线程,相当于一个人,这个人交替的做任务。

这个人有两个任务,第一个是吃水果,第二个是写文章。
那么这个人是先去吃两个水果,然后再去写文章,过一会再去吃水果,然后再来写文章。

多线程的情况:
几个人互相协作,处理这一堆任务

多个线程,在每个线程中交替的执行任务

异步编程的好处

实用:
利用异步编程,不阻塞当前的ui线程,用户体验很好。
性能:
一个程序的性能是非常重要的,这个不言而喻。
当我们执行耗时任务(读写磁盘,网络请求)的时候,大约70%的时间都浪费在等待结果上面。
利用异步编程,在这浪费的70%的时间内,我们可以愉快的保存当前任务状态,去执行其他任务,等那个任务执行完成,有了结果,我们切换到那个任务的执行上。最大化的利用这个线程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容