范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

谈谈JAVA中的同步和异步编码模型

  #头条创作挑战赛#前言
  在计算机的早期阶段,单处理器系统占据主导地位,许多早期的编程语言都采用了同步编程模型。但是随着硬件的进步,出现了多核的处理器,这就需要开发更好的编程模型。一个能够充分利用所有资源的强大模型将是最合适的模型,这也催生了异步编程模型。
  对于初学者来说,很难理解这两种编程模型之间的区别。在这篇文章中,我将尝试用通俗易懂的术语来简化和解释差异。我们还将看一下 Java 中的一个简单示例,了解 Java 中为异步编程提供的 API。真实世界类比
  在深入研究编程模型之前,我们先通过现实中的例子了解下同步和异步系统。超市作为一个同步系统
  我们都去过超市商店购买我们的日常用品,每个人都用手推车收集物品,然后去柜台,柜台人员会扫描所有物品,准备账单,接受该人的付款,最后给出收据。对于每个客户来说,这部分都是一个耗时的过程。此外,所花费的时间与商品数量、任何技术故障和找零钱(现金支付)的时间成正比。
  想象一下,如果是节假日,超市打折会怎么样? 客户将不得不排队,花费大量时间,就像下面的图片一样:
  在同步系统中,需要等待前一个任务完成,才能处理下一个任务,这会导致系统的瓶颈并降低系统的吞吐量。麦当劳作为一个异步系统
  麦当劳设有自助服务亭终端,客户可以下订单并完成付款。付款完成后,将随订单号一起分发收据。订单准备就绪后,屏幕上会显示订单号。
  在准备食物的同时,顾客可以同时做多件事。他们不会被准备订单的人挡住,因此商店可以避免拥挤。客户不会按顺序收到他们的订单。例如: 一个人可能会在另一个人之前收到他的食物,即使他会在他之后下订单。这是异步系统的一个例子。
  异步系统不会等待前一个任务完成,当给定任务正在进行时,它会继续执行另一项任务。同步编程模型
  在同步编程中,每一行代码都是按顺序执行的。在网络或文件 IO 调用的情况下,执行线程会阻塞。让我们看一下同步代码执行的示例。
  我们将以电子商务系统为例。假设我们有一个函数,可以根据订单获取所有商品。然后它会为这些项目创建一个 CSV 文件并存储它。此外,它通过电子邮件将订单状态信息发送给客户。在上述情况下,我们的代码将按顺序执行,即第 10、11 和 12 行。
  这些fetchItems函数执行数据库调用。数据库调用代价很大,因为它是 IO 调用。一旦我们调用该fetchItems方法,主线程就会阻塞。直到从数据库成功返回所有项目,它才恢复。
  该createCsvFileForItems函数处理项目并生成 CSV 文件。该函数再次将主线程置于等待状态。一旦文件创建成功,该函数将返回。此外,它将调用该sendOrderStatus方法。
  该方法sendOrderStatus主要是使用电子邮件地址并将订单状态发送给客户。
  假设每个函数所花费的时间如下:fetchItems- 5 毫秒createCsvFileForItems- 10 毫秒sendOrderStatus- 8 毫秒
  程序完成所需的总时间为 23 毫秒,sendOrderStatus函数将在 15 毫秒后调用。实际上sendOrderStatus功能是比较独立。但是,它仍然需要等待前面两个功能完成。假如我们先调用sendOrderStatus,在这种情况下,fetchItems函数必须等待 8 毫秒。
  每个功能花费的时间
  此外,当函数被调用时,主线程会阻塞。当线程进入等待状态时,它无法做任何有用的工作。如果应用程序在多核 CPU 上运行,则只会使用一个 CPU。这会导致其他 CPU 闲置。
  通过在不同线程中执行独立任务,我们可以充分利用所有 CPU 内核。在上面的示例中,这可以通过并行运行fetchItems和sendOrderStatus来完成。完成后,我们可以使用结果然后调用createCsvFileForItems。异步编程模型
  在异步编程中,独立的任务在不同的线程上并行执行。一旦任务完成并返回结果,相关任务就会作为回调被调用。独立任务不会阻塞主线程,我们可以利用 CPU 的所有核心。
  在上面的代码中,我们有每个方法的异步版本。该代码不会依次执行第 32、33 和 34 行。它将调用fetchItemsAsync方法新起一个线程从数据库中获取数据。随后,它将调用该sendOrderStatusAsync方法而无需等待第一个函数完成,此方法将在不同 CPU 上的单独线程上运行。在第 33 行,该fetchItemsAsync方法返回一个Future。主线程将在第 35 行等待这个Future并获取它的值。
  该功能的执行将如下图所示:
  异步函数执行 Java 中的异步编程
  Java 提供了实现异步编程的接口和类,如CompletionStage、CompletableFuture ,表示返回一个异步执行未来的结果。
  在上面的示例中,该方法fetchItemsAsync返回了Future>,简单理解未来会返回的数据。此方法定义并初始化一个 CompletableFuture。在 Executor API 的帮助下,它将执行启动一个新线程运行。计算完成后,它会完成 future(第 48 行),然后返回它。
  由于fetchItemsAsync是异步的,主线程可以同时调用sendOrderStatus 方法。因此,它不需要等待前一种方法完成。然后它会在以后使用get方法得到最终的结果。主线程将阻塞调用 get 方法,并在结果可用后恢复。
  我们可以避免上述样板代码并使用 CompletableFuture 的 API。CompletableFuture 提供方法supplyAsync和runAsync。Supplier 接口是一个不接受任何参数的功能接口。它返回参数化类型的值。
  使用可完成的期货
  supplyAsync我们在上面的代码片段中使用函数。在内部,此函数将在一个线程中从 java 中的 ForkJoinPool 执行代码,该thenApply构造处理异步计算阶段的结果。
  如上所示,fetchItems调用异步返回项目列表。然后将结果提供给createCsvFileForItems函数。此函数充当回调函数,并在fetchItems函数完成后被调用。程序开始执行函数sendOrderStatus,无需等待第一阶段的计算完成。因此,我们使用异步编程解耦了两个独立的任务。总结
  我们通过上面简单讲解了同步和异步编程模型,我们来总结下各自的优缺点。
  同步编程模型优点 同步编程简单易行。它非常适合 CPU 密集型任务。更适合简单的系统。调试同步系统更容易。
  同步编程模型缺点它不适合 IO 绑定任务,CPU 内核未得到充分利用。它引入了两个任务之间的依赖关系,一个任务可以阻止另一个任务的执行。不适用于高吞吐量和低延迟系统
  异步编程模型优点可以并行启动独立任务, 它充分利用了所有的计算资源。有利于 IO 任务。可扩展且适用于高吞吐量工作负载。
  异步编程模型缺点需要很多回调函数, 调试有时变得困难。不利于 CPU 密集型任务。在某些编程语言中难以实现。

昆明巫家坝机场是否本应作为机场保留下来?应该留下来,写文章的人不知道实际情况,我是民航人,在民航工作了七年都是在处理延误航班,知道长水机场是什么天气情况吗?春季夏季雷雨,风切变,冬季大雾,结冰下雪,一个国际化机场具备了所从昆明到泸沽湖,走哪条线好走?从昆明到泸沽湖,让我们先来看看导航怎么走以上三条线路,第一条最近,但也是目前路况比较不好的第三条虽然远,但总体路况最佳。不过,我想,朋友既然提出这个问题,想要的自然不会是导航上这个现在鸿蒙那么火,为什么当初的yunos没那么火呢?最大的败笔是后台删除了用户的程序,谁还用它很简单阿里云,缺的是市场应用,可以说几乎没有什么大的市场应用。因为阿里没有手机终端等这些业务,别人不用,就相当于废了。华为不同,存在大量的有没有人觉得支付宝越来越落寞了?不是落寞,而是基本不用了。有人要杠,觉得我不用支付宝大家都不用了,其实除了身边,大数据也可以告诉你支付宝已经没什么太大的作用了。先说我自己2007年接触淘宝,后来知道支付宝,当时觉2023年,70后的你是什么样子呢?2023年,我50岁了。闺女大学毕业,希望能找个稳定的工作,家人都健健康康的。2023年,我刚好50岁,是我退休的年份,即期待又不期待,希望我的余生能够心想事成,不在焦虑,优雅的老恶性的肺结节有哪些特征?近年来,随着检查仪器的精度提高和大众健康体检意识的普及,越来越多的肺部结节被发现。作为临床一线的呼吸科医生,最直观的感受是,前些年在门诊差不多一周才能见到几个肺结节,到如今已经占门脖子长小肉粒怎么去除?脖子上的小肉粒分3种情况。皮赘。相对来说好处理,主要采用激光或者冷冻的方法,。扁平疣。是常见的皮肤病,不仅影响美观,而且有传染性,可以自身传染,越长越多,而且也可传染他人。那么如何梅西离开巴萨,对于巴萨将是什么样的打击?欧冠巴萨0比3拜仁,就可以证明,梅西离开巴萨的打击还是巨大的。梅罗时代即将要结束,但是足球偏偏要他们留下足迹。在20212022欧冠小组赛首轮比赛当中,备受关注的曼联和巴塞罗那纷纷极重度耳聋可以戴超隐形助听器吗?需要注意什么?你好,助听器的选择是要根据自身听力选择。超隐形助听器是耳内式的一种,是根据自身耳道定做的,优点是外形隐蔽,且不受运动影响,缺点是外形小巧,但助听器的功率相对较小,适合重度听损以下的助听器可以延缓听力下降吗?你好,当然可以,佩戴助听器跟戴眼镜是一个道理。主要起到两个作用,一是帮助我们听到,第二个就是延缓我们的听力下降。佩戴助听器可以缓解听力下降吗?我可以优秀回答大家这个问题,我是一名听你觉得衣服有必要天天换着穿吗,而且至少一星期不重样儿?我觉得,换不换,跟个人的爱好性格也是有关,还有很多因素。第一取决于地域。我在南方,每天都换,而且每天都洗,因为南方的夏天很热,秋冬很潮湿阴冷,潮湿的话有汗粘哒哒的也是要换。冬天的话
冬天天气寒冷,10道温补暖胃的美食别错过,应季而食身体好大家好,欢迎大家来到我的美食自媒体,我是美食领域创作者锦绣V山东专注美食,让生活更有味。今天为大家带来了几道家常美食的做法,这几道美食也是深受大家的喜欢,而且是很常见的几道美食。天中老年要注意!专家建议冬天洗头2不该洗澡3不宜,都是小细节老人总说冬天最难熬,这话怎么说?人上了年纪,身体就如被使用很多年的机器一样,零件老旧,开始出现各种各样的问题,容易生病。尤其是在冬天,天寒地冻的,中老年体格素质差,体温调节功能衰退AppStore应用,最高定价74999元!苹果将支持不同商店分别定价12月7日,苹果官网发布对AppStore定价机制升级的公告。公告称,将为开发者提供新增的700个价格点和全新定价工具,开发者可以针对不同国家和地区的AppStore设定价格所有开逐梦动圈麦ElgatoWAVEDX与WaveMicArmLP大家好,我是波导终结者。之前跟大家分享过不少的电容麦,前不久就有小伙伴在问,电容麦和动圈麦哪个更适合家用?电容麦太灵敏怎么办呢?这些区别确实是存在的。Elgato也发布了WAVED梅根马克尔在2022年希望涟漪颁奖晚会上佩戴戴安娜王妃戒指我想如果戴安娜王妃还活着,她会把戒指放在首饰盒里,而不是放在任何人的手指上除了凯特的手指。近日,苏塞克斯公爵夫人梅根马克尔(MeghanMarkle)和哈里王子登上了2022年希望成都爱尔眼科林江科普不知道如何挑选镜片眼镜包括镜框和镜片,镜框是由多个零件共同组建而成,含有装镜片的镜圈连接两个镜圈的鼻梁支撑在鼻子上的鼻托钩挂耳朵的镜腿连接镜腿与镜圈的桩头和铰链等部位。镜片才是重头戏,看得清不清楚,2023年流行关键就是要红!红!红每年年末,全球最权威的色彩公司Pantone都会预测下一年的流行色。2023年度色花落洋红,洋红色有什么意义,又有什么新鲜设计?跟小印一起看看吧2023年度流行色来啦!前几天,20冠蓝狮推出SpringDriveSBGY023腕表GS9俱乐部独家限量版腕表之家品牌新闻GS9俱乐部的创建是为了汇聚冠蓝狮(GrandSeiko)收藏家社区,建立联系,并创造难忘的体验。在年度活动2022年GS9俱乐部体验中,我们自豪宣布GS9俱乐部发熟女的风格,专属的优雅少女的风格看多了,但是并不是所有的姑娘都会喜欢可爱俏皮的风格,当然看起来年轻有活力是很多人都梦寐以求的事情,但是对于正在处于轻熟阶段的妹子们来说,成熟style确实也不错。有些人天你是路过我世界的人,也是我一生都放不下的爱忘不了的情你是路过我世界的人,也是我一生都放不下的爱忘不了的情曾经,我从没有想过会遇见你,遇见你之后我才发现,我是那么的喜欢你!遇见你,就如同遇见了稀世之宝,放在手心怕飞了,含在口中怕化了,走过了蹉跎我们趋行在人生这个亘古的旅程,在坎坷中奔跑,在挫折里涅槃,忧愁缠满全身,痛苦飘洒一地。我们累,却无从止歇我们苦,却无法回避。百年孤独人们无法承受百年的孤独,却也不惧孤独,在蹉跎了1