快速业务通道

实时Java,第5部分 - 编写和部署实时Java应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
不再能够预测和管理内存使用情况。

至此,我们已经设计好了内存模型,图 8 展示了更新后的系统图,其中标出了存储区:

图 8. 标出了存储区的高级架构图

实时Java,第5部分 - 编写和部署实时Java应用程序 - 编程入门网

线程优先级

使用 WebSphere Real Time 进行开发时,选择恰当的线程优先级比标准 Java 编码中重要得多。糟糕的选择可能会使垃圾收集器抢占您的 NHRT,或导致部分系统耗尽 CPU 资源。

“实时 Java,第 3 部分: 线程化和同步” 探讨了线程优先级的详细内容。对于我们的示例系统,设置优先级的目标如下:

给予轮询线程最大优先级,从而最小化丢失度量结果的风险。

避免筛选池线程被垃圾收集器中断。

为此,我们将轮询线程的线程优先级设置为 38(最高的 RT 优先级),将筛选池线程的优先级设置为 37。由于审计线程是一个常规 Java SE 线程,使用标准优先级 5,因此其优先级远远低于 NHRT。

这种配置意味这垃圾收集器线程的优先级略高于审计线程 —— 远低于 NHRT。

引导考虑事项:启动应用程序

实时Java,第5部分 - 编写和部署实时Java应用程序(13)

时间:2011-06-22 Caroline Gough

至此,我们只观察了应用程序的稳定方面 —— 也就是说,它开始运行之后的工作方式。我们尚未考虑它如何启动。WebSphere Real Time 应用程序的启动与标准 Java 应用程序类似:在 Java 堆中的一个 java.lang.Thread 上运行。从这里,我们需要在其他存储区中启动一些线程类型。

在我们的应用程序中,所有的引导操作都是在 MonitoringSystemImpl 类的 startMonitoring() 方法中执行的,我们假设该类由堆内存中运行的一个 java.lang.Thread 调用。

我们的引导任务是:

在不朽内存中创建一个或多个轮询线程。

在不朽内存中创建一个或多个线程池对象,各入池线程也在不朽内存中创建和运行。

在不朽内存中创建审计线程对象,在堆中运行。

可以使用 ImmortalMemory.newInstance() 方法,通过一个 java.lang.Thread 反射地在不朽内存中创建对象。对于带有少数几个构造方法参数的类,或者如果您正创建同一个类的多个方法,这是可行的,但是对于构造方法具有大量参数的类来说,很快就会变得杂乱无章。

与 java.lang.Thread 不同,RealtimeThread 可进入不朽内存来执行某些工作(通过向 ImmortalMemory.enter()) 提供实现 Runnable 的对象或将不朽内存作为线程的初始存储区提供)。这种方式的优势是您可以编写标准 Java 代码,每个 new 操作都将在不朽内存中创建一个对象。缺点是从不朽内存中运行的 RT 线程上基于堆的 java.lang.Thread 获取代码难免看上去有些混乱。

在示例代码中,我们编写了一个实用工具方法 —— Bootstrapper.runInArea,它获取一个 MemoryArea 和一个 Runnable 对象。在内部,它在所提供的存储区内启动一个短期的 RealtimeThread,从而执行 Runnable。这是一种较为干净的引导方法。

无论多么努力地尝试,使此类引导代码优雅、干净、易读也是非常困难的。在不回头参考架构图的前提下,为任何阅读代码的人解释存储区和线程类型间的不断切换都很困难,也将产生会令老练的 Java 编程人员迷惑不解的结构。最好的建议就是使此类代码本地化,在开发者文档中花上一番工夫去解释其背后的思想。

现在,我们已经介绍了设计中的主要组件,下面就可以体验一下最终得到的应用程序了。

演示

本文附带了上述设计的一个实现(下载源代码)。我们建议您阅读源代码,看看我们所讨论的理论如何实现为可运行的代码。

随同监控系的实现一起,我们还提供了一个虚拟的生产线和工人控制台,以供测试监控系统。罐子按正态分布装罐,偶尔会出现装得过多或者不满的罐子。

演示程序作为一个控制台应用程序运行,提供表明系统状况的消息。

构建演示程序

演示程

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号