同步和异步

区分同步(Synchronous)和异步(Asynchronous) 本文对比了Unity和C#中的同步与异步编程模式。同步是顺序执行代码,会阻塞当前线程;异步则允许非阻塞执行,通过协程或线程实现。协程适合主线程内的轻量级异步任务,如分帧加载;线程适合耗时操作,但需注意线程安全。文章详细介绍了两种模式的原理、使用场景和关键区别,并提供了代码示例。选择方案时,应根据任务类型权衡:简单逻辑用同步,Unity相关异步用协程,独立耗时任务用线程。合理组合使用可提升程序性能和响应性。 阅读详情
同步和异步通常用来形容方法的调用方式。

同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。

异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。
通常我们写的方法都是同步方法,方法间执行都是串行化的,在一个线程内运行。

我们举一个小例子:
你和朋友去吃饭,你们到达饭店,点了一桌满汉全席。由于你们饿的不行,就在饭店等待厨师做好菜,等菜上桌。你和你的朋友吃完饭,付了钱,舒舒服服的去商场购物了,一次饭局就结束了。这就是同步调用。

如今,我们正处在互联网时代,当你们饿的时候,就打开饿了么,点了一桌满汉全席,支付了餐费,这时你就完成了点菜。商家接到了你的订单之后,就会马上开始安排(毕竟顾客就是上帝嘛)。现在你们无须默默等待,以免被饿所折磨,于是你们打开了京东,开始了新的购物。当饿了么小哥饭菜送到时,一签单就完事了,并且你们也完成了购物。这就是异步调用。

我们使用代码表示:
public static void eatMeal() {
System.out.println("点了一桌满汉全席,快来吃啊。。。");
try {
//模拟等待上菜时间
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("饭已吃完,饭局结束。");
}

public static void shop() {
System.out.println("我们可以开始购物了。");
}


public static void main(String[] args) {
eatMeal();
shop();
}
执行结果:按着上下文顺序,依次执行。典型的同步调用方式。


现在我们修改一下eatMeal()方法,改为异步方式,通常使用线程开启异步。
另外springboot中可以使用(@EnableAsync和@Async)开启异步模式。



执行结果:使用异步方式,我们可以把耗时的操作,放在另外一个线程之中,提高程序性能。


这个例子不是特别的好。通常在业务需求中,当上下文内容没有关联的时候,上一个操作比较耗时,我们无需等待上一个执行结束才开始下一个执行,我们就可以使用异步方式,提高响应速度,进而提高程序性能。




[同步和异步]同步和异步是什么? 我们共同进步本系列持续更新,关注我,带你了解更多程序员必备知识下期再见。 阅读详情

相关推荐

异步和同步

通常情况下,当我们抓取帧的时候是从一个连续的视频流序列中去抓取一个或者多个视频帧。尽管近来有许多的专业设备使用数字信号,但大多数情况下,视频信号是模拟信号(analog)。最常见的模拟视频格式是 NTSC: 640 × 480 pixel, 30 frames per second and PAL: 768 × 576 pixel, 25 frames per seco

hehe6378的专栏 1924

同步与异步的认识

带来同步与异步的基本认识

guyuanyu的博客 1万+

影刀初级考试操作题2

题型E主要考察了Excel的操作,总体上难度不大,流程也很少。有些细节地方比如是追加还是覆盖,多试几次就没问题了。

weisili2012的博客 1万+

同步和异步的区别、例子

一、同步、异步的区别 同步,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。 异步,不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。 同步: 同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。...

lmm0513的博客 6715

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发STM32H750VB使用STM32CUBEMX生成工程IAR+J-LINK调试准备工作CUBEMX生成的代码问题所在如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U

qq_37433166的博客 5346

【文章阅读+代码复现】Point-GNN

Brief 在3D点云语义分割方法中,GNN已经做了很多可用的方案,但是在目标检测上依旧是采用比较传统的CNN和稀疏卷积的组合,这一篇文章是研究了图卷积在3D检测的中的用法。来自卡内基梅隆大学。已经被CVPR2020接收. 这里是 paper 这里是 code Abstruct 一个采用GNN设计的3D目标检测框架 过程是先将点云场景编码成图结构,随后设计了一个叫point-GNN的网络结构,在...

有所为,有所成长 1万+

同步与异步

文章目录同步与异步的介绍synchronized 的介绍synchronized 的使用 同步与异步的介绍 同步(synchronized):同步是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。 异步(Asynchronous):异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回...

LTC_1234的博客 7015

【计算机视觉学习03】全景图像拼接

文章目录一、基本原理1.1 图像拼接的几何原理1.2 直线,圆,复杂曲线方程拟合1.3 RANSAC算法1.4 APAP算法1.5 寻找最佳拼接缝(Seam Finding)1.5.1 最大流问题1.5.2 最大流问题的增广链算法1.5.3 最大流最小割定理二、 图像拼接具体实现2.1 代码2.2 运行结果 一、基本原理 将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点(SIFT特征点)的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像。 图像拼接基础流程

一个正在努力学习的iter 7790

同步(Synchronous)和异步(Asynchronous)

同步异步是啥?打个比方: 定义:同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理...

weixin_30477797的博客 1491

CIC-IDS-2018数据集高效预处理实战:从数据清洗到特征整合

本文详细介绍了CIC-IDS-2018数据集的高效预处理方法,从数据清洗到特征整合的全流程实战。通过内存优化、异常值处理和特征工程等技巧,帮助网络安全研究人员快速处理大规模网络流量数据,提升机器学习模型的训练效率和准确率。特别针对特征数据的预处理提供了实用代码示例和优化建议。

weixin_29274969的博客 502

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

[系统移植] 移植主线U-Boot(v2024.01-rc3)到RK3399

Systemcall名屋 1004

同步和异步区别

在 Vue.js 中,同步和异步是重要的概念,涉及数据和视图的更新。同步更新保证了数据和视图的实时同步,适用于大多数场景。而异步更新可以提高性能并优化渲染流程,通过延迟数据变化的应用和视图更新来减少不必要的计算和渲染开销。Watchers 允许您监听数据的变化,并在数据发生变化时执行特定的操作或逻辑。通过 Watchers,您可以处理异步任务或执行需要额外处理的逻辑。nextTick 方法允许您在 DOM 更新完成后执行回调函数。

Java领域 1万+

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 468

同步和异步有什么区别

无论使用哪种方式,异步操作的实现都需要注意处理成功和失败的情况,确保及时处理异步操作的结果或错误。async/await: async/await 是 ES2017 引入的用于更加优雅地处理异步操作的语法糖,基于 Promise 对象实现,使得异步代码看起来更像同步代码,易于阅读和维护。async/await: async/await 是 ES2017 引入的用于更加优雅地处理异步操作的语法糖,基于 Promise 对象实现,使得异步代码看起来更像同步代码,易于阅读和维护。关键字,可以定义一个异步函数。

2301_79265530的博客 2546

【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

baron-周贺贺-代码改变世界ctw 6429

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

什么是JavaScript的同步和异步

JavaScript同步和异步 JS语言的一大特点是单线程,同一时间只能做一件事。意味着一件事结束以后 才能进行下一件事。 HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程。于是有了同步和异步。 同步: 前一个任务结束后再执行后一个任务,程序执行顺序与任务的排列顺序是一致的、同步的。 异步: 在做一件事的同时可以处理其他事件。 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta c

Dreamer 1297

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

线程的同步和异步

一、同步和异步的概念 同步:就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,Java中所有方法都是同步调用,应为必须要等到结果后才会继续执行。我们在说同步、异步的时候,一般而言是特指那些需要其他端协作或者需要一定时间完成的任务。 简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。 异步(Async) 异步与同步...

Snowing1234_5的博客 2208

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Promise和异步同步

同步和异步 同步:停止等待运行结束,继续后续的运行 异步:需要等待一个内容完成后继续执行后面的内容,但是不能将后面的内容写在等待函数外,否则就会同时执行两个 图片要进行预加载,否则不会出现图片的宽高。浏览器具有缓存功能 异步操作 操作性事件 需要时间 load事件 异步 需要加载 setTimeout 异步 setInterval 异步 requestAnimationFrame 异步 注意:async 放在下一帧执行 ​ ..

tx_blogs的博客 897

同步和异步的区别?

特性同步(Synchronous)异步(Asynchronous)执行方式调用方发起任务后,必须等待任务完成才能继续执行后续操作调用方发起任务后,无需等待任务完成,直接继续执行后续操作控制权任务执行期间,控制权由任务本身持有(调用方被"挂起")任务执行期间,控制权始终在调用方手中结果获取任务完成后直接返回结果任务完成后通过回调、Future等方式通知调用方典型场景方法调用、阻塞I/O(BIO)异步I/O(AIO)、事件驱动编程、消息队列处理执行流程。

weixin_43521001的博客 724

同步和异步的区别? 同步函数和异步函数的区别?

同步和异步是编程中处理任务执行顺序的两个基本概念,尤其是在多线程或多任务环境中。下面我将分别解释同步和异步的概念,然后讨论同步函数和异步函数的区别。

m0_47408435的博客 1049
下一篇: 阻塞和非阻塞
西红柿丶番茄
博客等级 码龄10年 21粉丝 41原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值