javaWeb中的异步与同步

javaWeb中的异步与同步

异步与同步在不同场景有许多含义,本文以web为例简要对比并总结相关知识。

web同步加载

  1. 内容:浏览器阻塞后续任务,对当前页面或资源进行解析或加载,或图像渲染。
  2. 特点:服务器与浏览器保持任何方面的信息一致,浏览器状态即服务器状态,且都是最新状态。
  3. 应用:对于需要获取结果再进行操作的任务需要进行同步加载。对于实时操作或安全性要求高的任务需要同步加载。

web异步加载

  1. 范例:Ajax:局部刷新,局部加载
  2. 内容:浏览器获取当前页面静态文件加载,部分内容在同一请求中随后加载
  3. 特点:浏览器与服务器信息状态不一致,任务提交不一定执行,浏览器继续进程不一定依靠任务结果,服务器不一定是最新状态。
  4. 应用:结果对接下来任务影响不明显的任务可用异步,安全性不高的任务可以用异步,同步执行开销太大可以用异步。

总结

同步与异步是一种思想问题。在模型中可以用瀑布模型和并发模型类比。也可以说是单线程和多线程的类比。核心问题是消息传递的时机与方式,在不同问题中时机和方式各不相同。同步需要客户端等待信息更新再执行下一步的任务,提交则意味着任务必定执行且得到结果。而异步的客户端可以一次提交多个任务,也可以在任务提交后进行其他任务,已提交任务的反馈决定权不在客户端手里,得到答案的时机和是否得到答案都由服务端确定。异步机制也许满身优点,但相对来说,同步可能意味着简单的问题,简单的技术以及简单的消息,而异步可能意味着相对复杂的事情。显而易见,对于同步来说,需要考虑的问题比较少,比如:

  1. 等待消息的时间成本是否需要花费?
  2. 等待消息的空间成本是否需要花费?

而异步的问题比较多,比如:

  1. 单个消息反馈是否有延迟?时间成本是否合理?
  2. 单个消息反馈是否影响后续任务的执行?影响程度有多少?
  3. 消息反馈的技术实现是否能够接受?
  4. 多个任务同时或间隔不大提交消息反馈的是否有延迟?时间成本是否合理?
  5. 多个消息的反馈顺序和内容是否会相互影响?

……
某方面的简约可能代价是许多方面的复杂。毫无疑问同步与异步的选择需要考量,要结合,要包容。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值