对同步异步的理解

来源:互联网 发布:360数据恢复在哪里 编辑:程序博客网 时间:2024/05/02 02:34

 

同步(synchronized)和异步(asynchronized)是对于多线程(multi-threading)而言的
同步可防止并发 主要出于数据安全的考虑

如某一线程在执行完对数据的加法操作后 在还没来得及使用新数据之前 被另一线程就抢先执行了减法操作
这样它就没法得到它单一施加影响的数据结果,存在安全隐患

异步允许并发
ajax技术通常都是异步实现的
去服务端请求数据的同时 前台的操作不会阻塞 而是异步进行 节省时间的同时保证了效率

你给你媳妇存钱,先查了一下是1000,你要存100,结果你存的时候你媳妇也正在取钱,她准备取100,如果这个时候不思锁定其中一人的动作,后果就很可能是,你媳妇取走了100,本来应该冲至账户金额为900,待还没有重置,你的存动作就过来了,因为之前你那里得到的信息是1000所以存的时候是1000+100,再以重置帐户,变成1100了而不是900
这就是同步(一个人占用了,我就不能再做了)
异步就是互不影响
ajax的第一个a就是异步,你一边浏览网页,后台一边和web服务器通信 检查你的用户名是否重复,但你却在前台根本看不出来

同步是为了保证数据的读写安全!当用户并发操作时对数据进行保护,防止错误的读写数据!

回复4:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率

 

 

 

同步:必须保持相同步调。我在你前面就会始终在你前面,即使你跑的比我快又怎样,了不起啊,我有synchronized给我撑腰,你超我一个试试看,抽你丫的不可!

异步:(synchronized不知去向)你丫刚不是牛x吗?我还就超了你了,怎么招吧,你抽我一个看看,有本事冲这来!