A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱纲 中级黑马   /  2012-2-18 12:42  /  2298 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问一下同步和异步有啥区别啊,因为我在看到StringBuilder和StringBuffer时看到异步和同步,就想到了这个问题,什么时候要用到同步,什么又要用到异步呢,什么时候不用考虑呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
同步就是许多线程同时用一个资源啥的哦,一个在用别的就要等,异步就相反了,可以不用等待
下面这是人家的话:
同步:发送一个请求,等待返回,然后再发送下一个请求
异步:发送一个请求,不等待返回,随时可以再发送下一个请求

同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
这些都是对的。
同步和异步最大的区别就在于。一个需要等待,一个不需要等待。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息
电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
为了防止多个线程并发对同一数据的修改,所以需要同步,否则会造成数据不一致(就是所谓的:线程安全。)

评分

参与人数 1技术分 +1 收起 理由
admin + 1 恭喜,25分了

查看全部评分

回复 使用道具 举报
和AJAX的理论是一样的,同步是发送请求后必须等待返回值,然后才能再发送下一个请求 ;
异步可以在发送请求的同时,去做另一件事情,异步会节省时间提高效率.
AJAX异步处理 企业中应用比较多。




评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
当有多个线程同时执行的时候,为了防止多个线程操作同一资源就必须用到同步,而当只有一个线程的时候就不需要同步了
回复 使用道具 举报

同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求
不到,怎么办,A线程只能等待下去
异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程
仍然请求的到,A线程无需等待
显然,同步最最安全,最保险的。而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个
进程崩溃,但没有同步机制的存在,性能会有所提升。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
唐溪永 黑马帝 2012-2-20 21:20:37
7#
同步:上一段代码没的完成,下一段必须等到上一段代码完成后才可以执行。如买票排队
异步:上一段代码没的完成,下一段不必等到上一段代码完成就可以执行。如手机发送短信。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马