同步与异步的概念

请问同步与异步到底什么意思啊?我所见的异步好像就是在主线程开一个新的线程就是异步了,同步就是单线程,是这样的吗?

6个回答

同步就是在一个主线程里,你要做三件事情,A做完了做B,B完了再做C,是顺序执行的;

异步就是在一个主线程里,你开了三个线程来分别处理ABC这三件事,这三个子线程在代码调用的时候可能你是先调A再调B和C,但是在执行子线程的时候即使A线程没执行完,线程B和C也会往下执行,让我们看起来好像ABC三个线程是互不干扰的分别在执行。

很多时候我们会用异步多线程来处理同一业务里的大量数据,好比有一千个订单要处理,如果你用一个线程顺序执行,你就要循环这批订单,一个个处理,消耗非常多时间;但是用多线程你就可以开十几二十个线程异步处理,让效率提高很多。

另外,异步虽然我们看起来是很多个线程同时在跑,其实对同一CPU来说它在同一时间还是只能处理一个线程的,只是在一个线程里遇到有IO操作等等需要CPU等待的时候,就会切换到另一个线程去执行,加强了使CPU使用率,所以并不是什么时候都适合使用多线程的。

weixin_42503736
weixin_42503736 恩, 谢谢
6 年多之前 回复
lin329848409
lin329848409 ajax是向服务器发异步请求,跟多线程的异步请求什么不是一个概念,你可以去搜下ajax原理。同步代码块的东西你也去网上搜下吧,很多这方面的例子和文章,这些东西应该靠百度和谷歌都很容易自己搞定的
6 年多之前 回复
weixin_42503736
weixin_42503736 另外,同步代码块是不是就是 你所说的“A操作和B操作有可能就是两个子线程里的”的一种情况
6 年多之前 回复
weixin_42503736
weixin_42503736 请问ajax的异步访问,内部也是服务器端的多线程吗?
6 年多之前 回复
lin329848409
lin329848409 说简单点异步就是让AB都在后台运行,主线程该干嘛干嘛!同步就是A干完结果给主线程,主线程才往下做其操作
6 年多之前 回复
lin329848409
lin329848409 不是的,同步的顺序执行必须是上层业务处理完才能往下执行,好比A操作做完了,获得A操作的结果了然后主线程接着往下做B操作(A操作和B操作有可能就是两个子线程里的);如果是异步,在A操作(子线程中)执行的过程中主线程不等待执行结果,接着往下做B操作,那么A和B就是两个互不干扰的线程了,这才算是异步
6 年多之前 回复
weixin_42503736
weixin_42503736 所以所谓的异步还是多线程了?
6 年多之前 回复

调用者必须等待被调用者执行完毕,即调用者和被调用者是串行执行的关系,叫同步。调用者不等待被调用者执行完毕,调用者与被调用者并行执行,叫异步。

是的
单线程一定是同步
多线程大部分情况是异步

同步是同一时刻只有一个线程在做,异步就是同一时刻可有多个现在在做。

同步就像QQ视频聊天,你申请了对方要同意,才能继续数据交换,并且不能给不同的人分别视频。(
异步就像发消息,不用管对方什么时候看,他能看到的时候能看到,想回复的时候就回复

同步就是在一个线程中,比如你想喝咖啡,就要先烧开水,然后泡咖啡!异步就是多个线程,好比是你在等烧开水的时候可以在旁边看报纸!前者有循序关系,后者者无!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问