写点什么

关于实时 Java 的系列文章

  • 2008-08-01
  • 本文字数:1634 字

    阅读完需:约 5 分钟

由 Sun 的 Brian Goetz 和 Robert Eckstein 合作撰写的有关 Java 和实时系统的文章最近登载在 Sun 开发者网络上,该系列文章由两部分组成。

该系列第一部分介绍了实时程序设计的概念,及其与 Java 的关系,并描述了应用标准 Java 运行时系统创建实时应用的障碍:

  • 操作系统问题:调度延迟、时钟精度较低。
  • 线程优先级问题:不可靠的线程优先级保证和优先级倒置。
  • 类加载延迟。
  • 垃圾回收延迟。
  • 应用程序代码不符合实时要求。
  • 系统中存在其它优先级较高的活动。

作者随后介绍了 RTSJ——Java 实时规范 (Real-Time Specification for Java)。RTSJ 与当初的 JSR 1 有所不同,从 2002 年最初的可用版本问世至今,已经过一系列维护版本。文章描述了实时规范对线程做出的改变: > 在一个真正的实时环境中,线程优先级是极其重要的,没有一个系统可以保证,所有的任务都能够准时完成。然而,一个实时系统能够确保的是,当有些任务即将超过最终时限时,可以先牺牲低优先级的任务来保障它的执行。 RTSJ 定义了至少 28 种优先权级别,并要求严格执行此规定。然而,正如本篇文章前面所说,RTSJ 的实现依赖于支持多种优先权的实时操作系统,和高优先级线程抢占低优先级线程的能力。

Goetz 和 Eckstein 接着提到 Java 实时系统规范的核心概念——实时线程: > 此外,RTSJ 可允许非实时和实时活动同时存在于一个 Java 应用中,对一个活动的时序保证程度依赖于活动所属线程类型: java.lang.Thread 或``javax.realtime.RealtimeThread 线程类型。- 标准 java.lang.Thread(JLT) 线程用来支持非实时的活动。JLT 线程可以应用 Thread 类定义的 10 种优先权级别,但是它们不适用于实时活动,因为不能够提供时序执行保证。

  • RTSJ 还定义了javax.realtime.RealtimeThread (RTT) 线程类型。RTTs 可以利用 RTSJ 提供的强大的线程优先权支持,它的调度遵循运行直至阻塞 (run-to-block) 原则,而非按时间片运行原则。这就意味着,当有另外具有较高优先权的 RTT 出现时,调度程序会抢占该 RTT。

第一部分讲到的最后一个概念是,支持内存管理所做的各种扩展。由于与垃圾回收及对象分配相关的延迟的存在,三个内存区域被划分出来: - 标准堆 (Standard heap)——与标准 Java 中的内存管理类似。

  • 永久内存 (Immortal memory)——必须由软件显式释放的内存。
  • 作用域内存 (Scoped memory)——具有不连续生命周期的内存,有固定大小。

引入 RealtimeThread 的扩展类——NoHeapRealtimeThread,以实时友好的方式辅助管理这些独特的内存区域:

RTSJ 提供一个 RTT 的子类,称为NoHeapRealtimeThread (NHRT)。该子类得实例可以避免由垃圾回收引起的不稳定情况。这个 NHRT 类是为硬实时 (hard-real-time) 活动所准备的。 为最大化可预测性,NHRTs 不能访问垃圾回收堆,也不能操纵堆变量。否则,线程会遭遇 GC 暂停,这将导致任务错过运行时限。与此相反的是,NHRT 可以更具预测性的方式使用 _ 作用域内存 _ 和 _ 永久内存 _ 特性分配内存。

然而,即使软件正在使用特定的内存区域,它的资源使用依然很容易受到内存其它非关键部分的 GC 的影响。由于这个原因,该系列文章的第二部分集中于和垃圾回收相关的问题,阐述了可用于实时Java 系统的不同GC 方法,然后介绍了Sun 的商业实时Java 系统: Java RTS 。在第二部分中描述了四种垃圾回收算法: - 基于工作的 GC(Work-Based GC)——回收由对象分配触发。

  • 基于时间的 GC(Time-Based GC)——回收通过标准的时间箱划定界限。
  • Henriksson’s GC——在关键和非关键线程之间有所区别的基于工作的 GC(Work-based GC)。
  • Java RTS Real-Time GC (RTGC)——可以用在 Java RTS 中,更加灵活 / 细粒度的 Henriksson’s GC 的扩展。

如今可用的实时系统有很多, Sun Java RTS IBM Websphere RT 都是遵从 RTSJ 的实时系统平台。可以选择的还有 Oracle Weblogic Real Time ,它是建立于标准 Java 的工具集,对 RTSJ 系统还不具备所有可靠性保证,但在固定时间边界内还是可以提供一个更具预测性的系统。 查看原文: Two-Part Series on Real-Time Java

2008-08-01 05:161319
用户头像

发布了 127 篇内容, 共 45.5 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

云智一体,大模型服务的超级工厂

百度开发者中心

人工智能 云计算 nlp 大模型

DNA序列分析软件 SnapGene 5 v5.3.1中文激活版 下载安装

南屿

SnapGene 5破解版 SnapGene 5下载 分子生物学软件 DNA序列

轻松完成图片转换矢量图,推荐Vector Magic for Mac破解版

南屿

mac软件下载 Vector Magic破解版 矢量图片转换工具

如何用 Python 实现一个 “系统声音” 的实时律动挂件

北桥苏

Python pyaudio 系统声音

Fig Player - play mp4 mkv mp3 苹果电脑媒体播放器

南屿

mac视频播放器 苹果软件下载 Fig Player破解下载 Fig Player Mac版

苹果Mac自用软件推荐:Unite for mac 将网站转化为应用程序 支持M1/M2/Intel

南屿

Unite for Mac Unite破解版 将网站转化为应用程序 Mac软件资源站

苹果电脑YouTube客户端下载:YouTube for mac激活版v1.22(56)中文版安装教程

南屿

YouTube客户端 苹果mac软件 Clicker for YouTube

【最新中文版激活序列号】Macs Fan Control Pro 苹果电脑掌控风扇必备软件

南屿

Macs Fan Control Pro下载 Macs Fan Control Pro破解 Mac 电脑风扇速度

深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用

汀丶人工智能

nlp 搜索系统 BM25算法 关键词检索

赋能开发者实现LLMOps全流程

百度开发者中心

人工智能 大模型

软件测试开发/全日制/测试管理丨测试用例设计

测试人

软件测试 自动化测试 测试开发 测试用例 用例设计

如何基于文心一言NLP大模型搭建生成式智能对话服务

百度开发者中心

人工智能 nlp 大模型

实践案例:通过API优化加快上市时间

幂简集成

产品 MVP API OpenAPI REST API

软件测试开发/全日制/测试管理丨软件测试流程

测试人

软件测试 测试开发

Emby for Mac:多媒体影音库管理工具 兼容M1

南屿

苹果软件下载 Mac破解软件 Emby for Mac 多媒体影音库管理工具

对话式搜索:基于OpenSearch向量检索版+大模型的实践

百度开发者中心

人工智能 大模型 对话系统

测试环境使用问题及其优化对策实践

京东科技开发者

每日一题:LeetCode-10037. 移除后集合的最多元素数

Geek_4z9ami

Go 面试 算法 LeetCode 贪心算法

StarRocks Awards 2023 年度贡献人物

StarRocks

数据库 数据分析 开源社区 StarRocks

行云部署成长之路--慢SQL优化之旅 | 京东云技术团队

京东科技开发者

Axure RP 8 中文激活授权码 Axure RP 8 完整安装教程 Mac/win

南屿

原型设计 Axure RP 8授权码 Axure RP 8下载 Axure RP 8汉化包

One Switch mac版 菜单栏一键控制神器 支持M/Intel

南屿

mac效率工具 One Switch for Mac 菜单栏一键开关控制神器 One Switch破解

关于实时Java的系列文章_Java_R.J. Lorimer_InfoQ精选文章