同步:提交请求--->等待服务器处理--->服务器处理完毕返回的这个期间客户端浏览器不能干别的事
异步:请求通过事件触发--->服务器处理(这时客户端浏览器还可以做其他的事情)---->处理完毕
通俗易懂的理解:
同步就是按顺序执行,执行完一个在执行下一个,需要等待、协调运行。
异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作,例如:同步就是:你喊我去吃饭,如果我听到了,我就和你一起去吃饭,如果我没有听到,那你就一直不停的喊,直到我告诉你我听到了,我们才一起去吃饭;而异步就是你喊我,然后自己去吃饭了,我得到消息后可能立即去吃饭,也可能下班后才去吃饭。
注意:线程就是实现异步的一个方式。异步和多线程并不是一个同等的关系,异步是最终目的,而多线程只是我们实现异步的一种手段。
同步和异步的区别(优点和缺点):
同步优点:可以避免出现死锁,脏读数据(脏读:t1读取了t2更新但未提交的事务,若t2回滚,则t1读取到的数据就无效)的发生。一般共享某一资源的时候用同步。
同步缺点:需要等待资源访问结束,浪费时间效率低。
异步优点:可以提高效率
异步缺点:安全性低
同步可以通过加锁synchronized关键字来实现