快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

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

时间:2011-06-22 Patrick Gallop Mark

线程化和同步是 Java 编程语言的核心特性,Java 语言规范(JLS)中对二者作出了描述。RTSJ 用多种方式扩展了 JLS 的核心功能。(参见 参考资料 中关于 JLS 和 RTSJ 的链接。)例如,RTSJ 引入了一些新的实时(RT)线程类型,它们必须遵守比普通 Java 线程更加严格的调度策略。另一个例子是优先级继承,它是一种锁定策略,定义了锁竞争时如何管理锁同步。

理解对优先级和优先级序列的管理有助于理解 RTSJ 针对线程化和同步所作的更改。优先级也是 RT 应用程序使用的一种重要工具。本文通过讨论如何管理线程优先级和优先级序列来描述 RTSJ 线程化和同步。讨论了开发、部署和执行 RT 应用程序(包括使用 IBM WebSphere® Real Time 开发的应用程序,参见 参考资料)时应该考虑的一些方面。

理解普通的 Java 线程

JLS 中定义的线程称为普通 Java 线程。普通 Java 线程是 java.lang.Thread 类的一个实例,该类拥有从 1 到 10 的 10 个优先级别。为了适应大量的执行平台,JLS 在如何实现、调度和管理普通 Java 线程的优先级方面提供了很大的灵活性。

WebSphere VMs on Linux®(包括 WebSphere Real Time)使用 Linux 操作系统提供的本地线程化服务。您可以通过理解 Linux 的线程化和同步来学习 Java 的线程化和同步。

Linux 线程化和同步

Linux 操作系统发展至今已经提供了不同用户级别的线程化实现。Native POSIX Thread Library(NPTL)(参见 参考资料)是 Linux 最新版本的战略性线程化实现,由 WebSphere VMs 所使用。NPTL 与它的前任相比优势在于 POSIX 兼容性和性能。在编译时可通过系统的头文件获取 POSIX 服务。可在运行时通过 libpthread.so 动态库和底层 Linux 核心支持获取 POSIX 服务。Linux 核心可以根据静态控制(如线程优先级级别)和系统中执行的线程的某些动态条件下来执行线程调度。

POSIX 允许您创建具有不同线程调度策略和优先级的 POSIX 线程(pthreads)以满足不同应用程序的需求。下面是三种此类的调度策略:

SCHED_OTHER

SCHED_FIFO

SCHED_RR

SCHED_OTHER 策略用于传统用户任务,如程序开发工具、办公应用程序和 Web 浏览器。 SCHED_RR 和 SCHED_FIFO 主要用于具有更高的确定性和时限需求的应用程序。SCHED_RR 和 SCHED_FIFO 之间的主要区别是 SCHED_RR 分时间片 执行线程,而 SCHED_FIFO 则不是这样。SCHED_OTHER 和 SCHED_FIFO 策略用于 WebSphere Real Time,并在下面作出了更加详细的描述。(我们不介绍 SCHED_RR 策略,WebSphere Real Time 没有使用它。)

POSIX 通过 pthread_mutex 数据类型提供锁定和同步支持。pthread_mutex 可以使用不同的锁定策略创建。当多个线程需要同时获取同一个锁的时候,锁定策略常常会影响执行行为。标准的 Linux 版本支持单个的默认策略,而 RT Linux 版本还支持优先级继承锁定策略。我们将在本文的 同步概述 一节对优先级继承策略作更详细的描述。

Linux 调度和锁定用来管理先进先出(FIFO)队列。

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

时间:2011-06-22 Patrick Gallop Mark

普通 Java 线程的线程调度

RTSJ 指出普通 Java 线程的行为跟 JLS 中定义的相同。在 WebSphere Real Time 中,普通 Java 线程使用 Linux 的 POSIX SCHED_OTHER 调度策略来实现。SCHED_OTHER 策略主要用于编译器和字处理程序之类的应用程序,不能用于需要更高确定性的任务。

在 2.6 Linux 内核中,SCHED_OTHER 策略支持 40 个优先级级别。这 40 个优先级级别基于处理器级别来管理,就是说:

出于缓存性能的原因,Linux 尝试在同一个处理程序中执行线程。

线程调度主要使用处理器级

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