黑马程序员技术交流社区
标题:
线程的同步和异步有何异同?
[打印本页]
作者:
周万谋
时间:
2012-10-26 11:59
标题:
线程的同步和异步有何异同?
本帖最后由 周万谋 于 2012-10-28 15:14 编辑
当多个线程在操作同一个资源时,要使用到线程同步,同步主要是为了解决线程的安全问题。那么什么是异步,异步有什么特点?跟线程同步有什么区别?求解。
作者:
赵红萍
时间:
2012-10-26 12:07
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
作者:
唐进
时间:
2012-10-26 12:12
异步我觉得在安卓上面用的很多,建议楼主学下异步,我认为两者都差不多,不过从字面上看,异步是对当前的调用者来说,调用的时候自己的程序在运行,异步的程序也同时在运行;多线程好像更偏于从第三方来看,比如两个者多个线程同时处理一个资源,或者同时处理各自的事情,但是多个线程之间的CPU争用可能要自己来写,比如用sleep();而异步是不用管这个的,你可以过一定的时间来查看异步的程序有没有完成或者让它调用一个事件来通知当前的程序它完成了,比如用在程序中查看IsCompleted来确定异步的调用是不是完成.我觉得用哪一种可能不重要,当你觉得用其中一个更合适的时候就选择一个就是了.
作者:
范贞亮
时间:
2012-10-26 12:26
建议楼主学下AJAX 就知道了 , 其实很简单的 , 简单点的概括就是 方法的调用 和方法的反返回不是直线执行下去,不是当方法调用了之后就一直在那里等待程序返回,再向下执行。而是你调用了方法 然后不用一直等待着方法返回, 方法什么时候返回不用管了 , 你只要设置好了回调函数 , 调用方法返回的时候就自动调用这个回调函数。
作者:
程杰
时间:
2012-10-26 12:33
异步就是说一个线程在干一个工作的时候,等待工作返回响应结果。如果没有得到响应这个线程可以继续干其他的工作而不需要一直在等的
作者:
齐连涛
时间:
2012-10-26 13:01
如果多个线程操作共享数据,不采用同步的话,共享数据会出现同时被多个线程操作,不安全。比如卖票,多线程操作同一个数据—票数,如果不同步,会出现同号票,或者说两张一摸一样的票,这样就是不安全的。所以,为了解决这样一类问题,就要使用线程同步,这样就可以保证一个线程操作完了,另一个线程才可以拿锁进去操作。不会出现两张一摸一样的票,就安全了。
作者:
周万谋
时间:
2012-10-26 13:03
感谢楼上童鞋的指导,现在有点思路了,刚百度了下,大致理解是这样:A线程正在执行动作,而B线程(B线程做他的事)要通知A线程,这时A线程继续执行动作,等到B完成动作后通知A.在这个过程可以理解为A可以不管B的执行,A继续工作,而B完成后通知A,这样貌似他们就没有影响了。
作者:
陈琦
时间:
2012-10-26 13:06
感觉好强大啊啊啊
作者:
黑马杨锦喜
时间:
2012-10-26 13:26
如果想共享数据,必须进行同步存取,防止得到垃圾数据或者不正确的数据;
使用异步,效率高点,不必苦苦等对某个程序执行完毕并能执行自己想做的事。
作者:
周万谋
时间:
2012-10-26 13:30
陈琦 发表于 2012-10-26 13:06
感觉好强大啊啊啊
呵呵,写程序要的就是感觉。努力吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2