黑马程序员技术交流社区
标题:
同步和异步有何异同
[打印本页]
作者:
为谁开?茶花满
时间:
2013-4-29 16:09
标题:
同步和异步有何异同
同步和异步有何异同,在什么情况下分别使用他们?
作者:
吴波
时间:
2013-4-29 16:19
同步的前提:
必须要有两个或者两个以上的线程
必须是多个线程使用同一人锁
作者:
殇_心。
时间:
2013-4-29 16:24
同步和异步最大的区别就在于。
一个需要等待,一个不需要等待。
同步可以避免出现死锁,读脏数据的发生。
异步可以提高效率。
多线程中对共享、可变的数据进行同步。
多线程中访问共享可变数据才有必要。
对于函数中的局部变量没必要进行同步。
对于不可变数据,也没必要进行同步。
作者:
孙鑫
时间:
2013-4-29 17:49
同步:发送一个请求,等待返回,然后再发送下一个请求 。
异步:发送一个请求,不等待返回,随时可以再发送下一个请求 。
两者最多区别在于,同步需等待,异步不需等待。
作者:
zoudeyong
时间:
2013-4-29 18:06
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率
作者:
cowthan
时间:
2013-4-29 20:11
如果你是FBI特工,你追一个恐怖分子,这时可能有两种情况:
1、你一边跑,一边开枪,这就是异步,两件事同时做:
Action you1 = new Action("追赶恐怖分子");
Action you2 = new Action("开枪射击");
you1.start();//追赶
you2.start(); //开枪
——这个代码可能不太恰当,就是为了举个例子,you1和you2是两个动作,但是是同时运行的
2、你跑一步,停下,开一枪,这叫同步,事情得一件一件做
You you = new You();
you.runToHim(); //追赶
you.shoot(); //开枪
——看这段代码,你追他,如果想开枪,就得停下开枪,开完再跑,这叫同步,shoot必须等runToHim运行完
之后才能执行
作者:
黄玉昆
时间:
2013-4-30 23:37
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者:
syusikoku
时间:
2014-3-6 19:54
同步:发出的请求必须得到返回的结果才去执行下一步的操作
同步如果发出去的请求,在没有得到返回的结果之前会一直停在那里。
异步:发出的请求不必得到返回的结果就去执行下一步的操作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2