Java 多线程系列文章第 2 篇编程
接下来几篇会给你们屡清楚多线程中涉及到的一些概念,理解了这些概念,日后的文章才好明白。设计模式
今天给你们讲讲同步和异步这兄弟俩。多线程
经过我们现实中的一个场景来描述这 2 个干巴巴的词。你们身边不知道有木有朋友是潮汕的?潮汕地区每家每户都有功夫茶,只要来客人,必定会用功夫茶来招待。功夫茶关键在于功夫两字,功夫指的是泡茶方式比较讲究,它不像咱上班时用保温瓶泡茶,而是有一道泡茶的流程和工具。下面在网上找到的功夫茶口诀(做为潮汕人这么久,都不知道有这口诀,是听我女友说有这个口诀才知道。。。)异步
潮汕功夫茶冲泡口诀:工具
有客人来的时候,咱们会先煮水,没等到水煮沸就先洗茶杯,落茶,等到水煮沸了,再冲茶,倒茶。这个过程当中,有些步骤是同步的,好比洗茶杯和落茶,确定要把茶杯先洗干净后再落茶,一我的无法同时干这 2 件事,咱们关注点放在煮水这个过程,是先煮水,煮水须要比较长的时间,煮水的过程当中把茶杯洗了,还有落茶,这个过程其实就是异步,异步指没有干等待水煮沸,在煮水的过程作其余事情(洗茶杯、落茶),这就像是发送了一个消息,通知说要煮水,而后就继续本身该干吗干吗,异步的过程彻底不影响当前作的其余事。下图反映了煮水步骤是异步的这个过程。线程
若是主人用下面方式来泡茶,不是新手就是不欢迎你(开玩笑,有多是主人一见如故,想趁着煮水和你唠家常)。上面讲了异步泡茶的方式,下面讲同步泡茶是啥回事。看下图,把煮水这个过程放在了时间线下方,也就是在煮水的时候干等着水煮沸,不作其余的事情,这就是同步,很明显,最后整个泡茶的过程耗时比异步的长。设计
这里在简单总结一下(若有错误请你们帮忙纠正):3d
同步(Synchronous):特指在同一个线程里面执行的内容之间的关系是有顺序的;线程之间须要同步时,就须要使用一些显式的同步方式,这也是多线程带来的大问题,在多线程编程须要特别关注。code
异步(Asynchronous):特指一些执行内容能够不用直接等待运行结果,异步执行的内容通常是在另外一个线程运行,只须要运行完结果反馈回来就行。cdn
推荐阅读
后台回复『设计模式』能够获取《一故事一设计模式》电子书
以为文章有用帮忙转发&点赞,多谢朋友们!