Real Time Java如何避免优先级倒置

时间:2011-11-11 11:15:22

标签: java real-time

Java的实时规范表明它提供了处理优先级转换案例的工具,如优先级继承和优先级上限协议。

On POSIX,有一个pthread_mutexattr_getprotocol可以设置用于解决此问题的协议

PTHREAD_PRIO_NONE
PTHREAD_PRIO_INHERIT  //(PIP)
PTHREAD_PRIO_PROTECT  //(PCP)

我想知道它在Real Time Java上的等价性。

谢谢。

1 个答案:

答案 0 :(得分:1)

要求符合RTSJ的实现至少支持优先级继承;优先级上限是可选的。例如,IBM WebSphere Real Time支持优先级继承,并依赖于操作系统为所有Java锁提供优先级继承(这意味着总是存在与任何锁定对象关联的pthread互斥锁,尽管我们仍然有办法使其更快否则会发出声音,特别是对于实际上没有争用的锁具。旋转锁(传统的非实时JVM倾向于用于加速短暂锁定)不能在实时JVM中使用,因为当线程以不同的优先级运行时会引入活锁问题(对于SCHED_RR / SCHED_FIFO策略) ,无论如何,优先级更高的优先级,期间)。