关键词:
JAVA
实时中间件
多线程
设计模式
摘要:
目前实时中间件主要遵循实时CORBA规范,采用C++语言开发。不采用Java作为实时中间件开发平台的主要原因是:普通Java平台的线程不能按优先级顺序执行,而且在不同操作系统平台下,相同的Java程序运行结果可能不同,可见Java线程的调度是实现相关的,不同平台的调度机制是不同的,因而无法保证实时系统运行可预测性的要求。虽然Java实时规范增强了Java语言的开放性,使它能够用来构建实时系统,但是要实现Java实时规范,要求具备操作系统、Java运行时环境和Java类库的支持,不适合在通用Java平台开发实时系统。
本文主要对Java应用于网络服务的软实时中间件中,线程的运行不可预测的问题展开研究。针对Java多线程访问临界资源时不能按优先级唤醒的问题,设计实现了一个基于优先级唤醒等待临界资源线程的组件,保证高优先级线程优先获得临界资源,达到在通用环境下提高Java实时性能的目的。本文创建了具有扩展优先级的线程类,为每个共享资源的线程创建包含唤醒用优先级信息的线程代理,线程的唤醒由与共享资源唯一相关的线程代理集合类按优先级在代理集合中完成。同时,本文针对Java实时中间件开发过程中遇到的共享资源访问、活锁等问题,通过引入实时系统的动态优先级算法,给出了相应的解决方案。
实验表明,通过采用本文开发的组件,能够创建在访问临界资源时可按优先级唤醒的、运行可以预测的Java线程,同时采用优先级等比例映射有效地解决了原Java线程优先级太少而无法按优先级调度过多线程的问题。通过引入实时系统的动态优先级算法,可以有效的解决中间件开发过程中遇到的活锁的问题。