泡一杯茶,学一学同异步
Java 多线程系列文章第 2 篇
接下来几篇会给大家屡清楚多线程中涉及到的一些概念,理解了这些概念,往后的文章才好明白。
今天给大家讲讲同步和异步这兄弟俩。
同步 & 异步
通过咱们现实中的一个场景来描述这 2 个干巴巴的词。大家身边不知道有木有朋友是潮汕的?潮汕地区每家每户都有功夫茶,只要来客人,一定会用功夫茶来招待。功夫茶关键在于功夫两字,功夫指的是泡茶方式比较讲究,它不像咱上班时用保温瓶泡茶,而是有一道泡茶的流程和工具。下面在网上找到的功夫茶口诀(作为潮汕人这么久,都不知道有这口诀,是听我女朋友说有这个口诀才知道。。。)
潮汕功夫茶冲泡口诀:
- 白鹤沐浴(洗杯):用开水洗净茶杯并提高茶具温度。
- 观音入宫(落茶):把铁观音茶放入茶具,放茶量约占茶具容量的五分。
- 悬壶高冲(冲茶):把滚开的水提高冲入茶壶或盖瓯,使茶叶转动。
- 春风拂面(刮泡沫):用壶盖或瓯盖轻轻刮去漂浮的白泡沫,使其清新洁净。
- 关公巡城(倒茶):把泡一、二分钟后的茶水依次巡回注入并列的茶杯里。
- 韩信点兵(点茶):茶水倒到少许时要一点一点均匀地滴到各杯中,使其浓淡均匀。
- 鉴尝汤色(看茶):观赏杯中茶水的颜色,闻茶之香气。
- 品啜甘霖(喝茶):乘热细缀,先嗅其香,后尝其味,边啜边嗅,浅斟细饮。饮量虽不多,但能齿颊留香,喉底回甘,心旷神怡,别有情趣。
有客人来的时候,我们会先煮水,没等到水煮沸就先洗茶杯,落茶,等到水煮沸了,再冲茶,倒茶。这个过程中,有些步骤是同步的,比如洗茶杯和落茶,肯定要把茶杯先洗干净后再落茶,一个人没法同时干这 2 件事,我们关注点放在煮水这个过程,是先煮水,煮水需要比较长的时间,煮水的过程中把茶杯洗了,还有落茶,这个过程其实就是异步,异步指没有干等待水煮沸,在煮水的过程做其他事情(洗茶杯、落茶),这就像是发送了一个消息,通知说要煮水,然后就继续自己该干嘛干嘛,异步的过程完全不影响当前做的其他事。下图反映了煮水步骤是异步的这个过程。
如果主人用下面方式来泡茶,不是新手就是不欢迎你(开玩笑,有可能是主人一见如故,想趁着煮水和你唠家常)。上面讲了异步泡茶的方式,下面讲同步泡茶是啥回事。看下图,把煮水这个过程放在了时间线下方,也就是在煮水的时候干等着水煮沸,不做其他的事情,这就是同步,很明显,最后整个泡茶的过程耗时比异步的长。
总结
这里在简单总结一下(如有错误请大家帮忙纠正):
同步(Synchronous):特指在同一个线程里面执行的内容之间的关系是有顺序的;线程之间需要同步时,就需要使用一些显式的同步方式,这也是多线程带来的大问题,在多线程编程需要特别关注。
异步(Asynchronous):特指一些执行内容可以不用直接等待运行结果,异步执行的内容一般是在另一个线程运行,只需要运行完结果反馈回来就行。
推荐阅读
公众号后台回复『设计模式』可以获取《一故事一设计模式》电子书
觉得文章有用帮忙转发&点赞,多谢朋友们!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
当谈论迭代器时,我谈些什么?
当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直希望能聚集一些有其它语言基础的同学,一起讨论共通的语言特性间的话题。不同语言的碰撞,常常能带给人更高维的视角,也能触及到语言的根基,这个过程是极有益的。 这篇文章是群内 樱雨楼 小姐姐的投稿,她是我们学习群里的真·大佬,说到对 Python 的研究以及高阶知识的水平,无人能出其右(群里很多同学都被她实力圈粉啦)。除了 Python,她对 C++、Perl、Go 与 Fortran 等语言都有涉猎,本文主要是对比了 Python 与 C++,来深入谈谈迭代器。话不多说,请看正文。 樱雨楼 | 原创作者 豌豆花下猫 | 编辑润色 本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/Be4tHnR0BY-C__xoPPBjhQ 0 前言 迭代器(Iterator)是 Python 以及其他各种编程语言中的一个非常常见且重要,但又充满着...
- 下一篇
如何打造VUCA时代的敏捷型组织?
王明兰 --原华为、微软创新与转型教练、华为云SaaS产品总监,著名精益&敏捷转型专家 VUCA最早来源于冷战时期,在现代世界意指商业世界越来越不确定性,越来越易变,越来越不可预测,我们已经进入到了VUCA时代。 我们再也不能用原来的那种传统的、计划驱动的方式来工作,因为时代的不确定性,所以大家要拥抱变化。敏捷本身也是在那样一个时代背景下,越来越发展壮大。如果倒回来很多年之前,敏捷不会发展壮大,因为我们还没有进入这样的时代。 以前,企业的生存周期比较长,但是现在企业的生存周期越来越短,从前的几十年、上百年,现在是十年,十五年。不确定性越发严重,所以企业不断的探索怎么能够让自己更加适应市场的变化,适应这个时代,这是很多企业都在尝试敏捷转型背后的驱动力。 这本书大家知道是什么吗? TEAM OF TEAMS ,这本书是很火的畅销书,叫 赋能 。 在我们看来这本书的内容和名字,实际上讲的就是大规模组织里面怎么能够提升组织的适应能力。赋能讲的大家都知道,在伊拉克战争期间,美国军队怎么改变自己来应对恐怖组织的袭击。我总结了整个书里面介绍了美国军队做了哪几项改变: 1-从集中化军事集团变为...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16