-1

我最近阅读了 Yin Yan 等人的论文“让 Android 准时运行”。为了完全理解这个主题,我还阅读了一些关于 Java 的实时规范 (RTSJ) 以及许多实时虚拟机、垃圾收集器等的内容。尽管如此,我仍然有一个疑问。符合 RTSJ 的虚拟机使用优先级继承来防止优先级反转,但我知道这种算法不能防止死锁。由于线程无法控制资源获取的顺序,因此存在循环等待的可能,这实际上会导致死锁。

那么,鉴于此,将 Java 用作实时编程语言(包括桌面和移动应用程序)真的安全吗?

我的问题不在于按原样使用 Java、Android 或 Linux。我的问题是关于 RTSJ(优先继承)选择的算法,因为它不能防止死锁的发生。

4

1 回答 1

1

你想要什么——实时的,还是桌面/移动的?实时适用于起搏器之类的东西——这意味着如果计算机不能保证工作将在 X 时间完成,它甚至不会尝试运行它。它仅适用于所有任务的执行时间已知的系统。计算机(包括 PC、Mac 和 Linux)不是实时的。由于 Linux 不是实时的,Android 上什么都不是。

至于一般的实时Java - 不。任何具有非确定性垃圾收集的东西都不能用于实时编程。

于 2017-07-05T17:54:19.620 回答