黑马程序员技术交流社区

标题: 同步和异步 [打印本页]

作者: 邱纲    时间: 2012-2-18 12:42
标题: 同步和异步
请问一下同步和异步有啥区别啊,因为我在看到StringBuilder和StringBuffer时看到异步和同步,就想到了这个问题,什么时候要用到同步,什么又要用到异步呢,什么时候不用考虑呢?
作者: 何招俊    时间: 2012-2-18 15:28
同步就是许多线程同时用一个资源啥的哦,一个在用别的就要等,异步就相反了,可以不用等待
下面这是人家的话:
同步:发送一个请求,等待返回,然后再发送下一个请求
异步:发送一个请求,不等待返回,随时可以再发送下一个请求

同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
这些都是对的。
同步和异步最大的区别就在于。一个需要等待,一个不需要等待。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息
电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息
作者: 成果    时间: 2012-2-18 18:19
为了防止多个线程并发对同一数据的修改,所以需要同步,否则会造成数据不一致(就是所谓的:线程安全。)
作者: 张红    时间: 2012-2-19 21:32
和AJAX的理论是一样的,同步是发送请求后必须等待返回值,然后才能再发送下一个请求 ;
异步可以在发送请求的同时,去做另一件事情,异步会节省时间提高效率.
AJAX异步处理 企业中应用比较多。





作者: 陈伟    时间: 2012-2-19 21:45
当有多个线程同时执行的时候,为了防止多个线程操作同一资源就必须用到同步,而当只有一个线程的时候就不需要同步了
作者: 马胜平    时间: 2012-2-19 21:51

同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求
不到,怎么办,A线程只能等待下去
异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程
仍然请求的到,A线程无需等待
显然,同步最最安全,最保险的。而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个
进程崩溃,但没有同步机制的存在,性能会有所提升。
作者: 唐溪永    时间: 2012-2-20 21:20
同步:上一段代码没的完成,下一段必须等到上一段代码完成后才可以执行。如买票排队
异步:上一段代码没的完成,下一段不必等到上一段代码完成就可以执行。如手机发送短信。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2