快速业务通道

实时Java,第3部分 - 线程化和同步 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
以便程序可以抢占问题线程。

从 Java 优先级到操作系统优先级的映射

在 Linux 上,POSIX SCHED_FIFO 策略提供了从 1 到 99 的整数范围内的 99 个 RT 优先级。在这个系统范围内,从 11 到 89 的优先级由 WebSphere VM 使用,此范围的一个子集用来实现 28 个 RTSJ 优先级。28 个 RT Java 优先级映射到此范围的 POSIX 系统优先级,IBM WebSphere Real Time 文档中对这一点作出了描述。但是应用程序代码不应该依赖这个映射,而只应该依赖于 Java 级别的 28 个 RT 优先级的相关顺序。这样 JVM 可以在未来的 WebSphere Real Time 版本中重新映射这个范围并提供改进。

如果某些端口监督程序或 RT 进程需要的优先级高于或低于 WebSphere Real Time 中使用的优先级,则应用程序可以使用 SCHED_FIFO 优先级 1 或优先级 90 来实现这些程序或进程。

JNI AttachThread()

Java Native Interface (JNI) 允许使用 JNI AttachThread() API 将使用 C 代码创建的线程加入到 JVM 中,但 RTSJ 并不对 JNI 接口进行更改或配置以便加入 RT 线程。因此,应用程序应避免用 C 代码创建准备加入到 JVM 中的 POSIX RT 线程。反过来,应该在 Java 语言中创建此类 RT 线程。

实时Java,第3部分 - 线程化和同步(8)

时间:2011-06-22 Patrick Gallop Mark

派生进程和 RT 优先级

一个线程可以派生另一个进程。在 Linux 上,派生进程的原始线程继承派生它的父线程的优先级。如果派生进程是一个 JVM,则 JVM 的原始线程创建时具有 RT 优先级。这将与普通 Java 线程的顺序冲突,比如原始线程的调度优先级比 RT 线程低。为了防止这种情形,JVM 强制原始线程拥有非 RT 优先级 —— 即拥有 SCHED_OTHER 策略。

Thread.yield()

Thread.yield() 只让步给具有相同优先级的线程,决不会让步给高于或低于自身优先级的线程。只让步给具有相同优先级的线程意味着在使用多个 RT 优先级的 RT 应用程序中使用 Thread.yield() 可能会出现问题。应该避免使用 Thread.yield(),除非完全有必要。

NoHeapRealtimeThreads

javax.realtime.NoHeapRealtimeThread (NHRT) 是 RTSJ 中的另一种新的线程类型,它是 javax.realtime.RealtimeThread 的一个子类。NHRT 具有与我们所描述的 RT 线程相同的调度特征,只是 NHRT 不会被 GC 抢占并且 NHRT 无法读或写 Java 堆。NHRT 是 RTSJ 的一个重要方面,本系列的后续文章中将对它进行讨论。

AsynchronousEventHandlers

AsynchronousEventHandler (AEH) 是 RTSJ 附带的新增程序,可将它视为发生事件时执行的一种 RT 线程。例如,可以设置 AEH 在某个特定或关联时间激发。AEH 还具有与 RT 线程相同的调度特征并具有堆和非堆两种风格。

同步概述

许多 Java 应用程序直接使用 Java 线程化特性,或正在开发中的应用程序使用涉及多个线程的库。多线程编程中的一个主要考虑是确保程序在执行多线程的系统中正确地 —— 线程安全地 —— 运行。要保证程序线程安全地运行,需要序列化访问由多个使用同步原语(如锁或原子机器操作)的线程共享的数据。RT 应用程序的编程人员通常面临使程序按某种时间约束执行的挑战。为了应对这个挑战,他们可能需要了解当前使用组件的实现细节、含意和性能属性。

本文的剩余部分将讨论 Java 语言提供的核心同步原语的各个方面,这些原语在 RTSJ 中如何更改,以及 RT 编程人员使用这些原语时需要注意的一些暗示。

Java 语言同步概述

Java 语言提供了三种核心同步原语:

同步的方法和代码块允许线程在入口处锁定对象并在出口处解锁(针对方法或代码块)。

Object.wait() 释放对象锁,线程等待。

Object.notify() 为 wait() 对象的线程解锁。notifyAll() 为所有等待的线程解锁。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号