我们经常会在书本中看到同步和异步的字眼,那么究竟同步和异步有什么区别呢?实际上,我们在生活中常常和同步异步打交道。
某天,小明晚上肚子饿了,下楼去买食物,他常常光顾的店有四川砂锅粉、张大姐泡菜和炸啊炸油炸社。小明首先去了四川砂锅粉买了砂锅粉,买完砂锅粉,然后去张大姐泡菜买了泡萝卜,买完泡萝卜,小明又去了炸啊炸油炸社去买了根大香肠,买完之后不亦乐乎的回去了。
我们来梳理下小明的行为。
- 买四川砂锅粉,耗时10分钟。
- 买张大姐泡菜,耗时10分钟。
- 买炸啊炸大香肠,耗时10分钟。
小明为了买这三样东西一共话费了30分钟,这些行为是串行的。
小明回去想了想,觉得买东西花费了太多的时间,这些时间都够开一把游戏了,因此他决定第二天改变下策略。第二天,小明实行的策略就是先去3家店付款,付完款然后等三家都做好了然后去取,当我们再次梳理下小明的行为。
- 去四川砂锅粉店付款
- 去张大姐店付款
- 去炸啊炸店付款
- 等待10分钟
- 取砂锅粉
- 取泡菜
- 取大香肠
我们发现这次小明仅仅花费了10分钟就取到了自己的三样美食。
上面就是同步和异步的区别,同步往往是串行的,异步则是并行的。
在计算机的世界里,读写磁盘和网络请求是非常耗时的,一个线程必须等待这些操作完成之后才能继续执行后续的操作,这就是同步操作。异步的解决方案通常使用多个线程去并行的执行这些耗时的任务,这样即可将原本耗时的操作变得不那么耗时。
异步常常用在文件下载、文件上传、网络请求等耗时的问题上。