加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java传统编程模型存在的问题

发布时间:2019-09-27 09:05:36 所属栏目:建站 来源:格局多
导读:Actor模型不仅仅被认为是一种高效的解决方案 ,它已经在世界上一些要求最苛刻的应用中得到了验证,为了突出Actor模型所解决的问题,本节首先讨论传统编程模型与现代多线程和多CPU的硬件架构之间的不匹配: 对面向对象中封装(encapsulation)特性的挑战 对共

当真的发生错误时,这种情况会变得更糟,当异步工作线程遇到错误时候会导致最终陷入无法恢复的境地。例如由错误引起的内部异常会冒泡到线程的根,并使线程关闭。这立即引发了一个问题,谁应该重新启动该异步线程执行的任务,以及如何将其还原到已知状态?乍一看,这似乎是可以管理的,但我们突然遇到了一个新的现象:异步线程当前正在执行的实际任务我们并没有存放起来。实际上,由于到达顶部的异常使所有调用栈退出,任务状态已经完全丢失了!即使这是本地通信,也没有网络连接,但是我们还是丢失了一条消息(可能会丢失消息)。

小结:

为了在当前系统上实现任何有意义的并发性和提高性能,线程必须以高效的方式在彼此之间委派任务,而不会阻塞。使用这种类型的任务委派并发(甚至在网络/分布式计算中更是如此),基于调用堆栈的错误处理会导致崩溃。因此需要引入新的显式错误信令机制,让失败成为域模型的一部分。

具有工作委派的并发系统需要处理服务故障,并需要具有从故障中恢复的原则方法。此类服务的客户端需要注意,任务/消息可能会在重新启动期间丢失。即使没有发生损失,由于先前排队的任务(较长的队列)或者垃圾回收导致的延迟等,将会导致响应可能会被任意延迟。面对这些情况,并发系统应以超时的形式处理响应截止日期。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读