我最近阅读了文章"让Android按时运行",由Yin Yan等人。为了完全理解这个主题,我还读了一些关于Java的实时规范(RTSJ)以及许多实时虚拟机,垃圾收集器等等。不过,我仍有疑问。符合RTSJ的虚拟机使用优先级继承来防止优先级倒置,但我知道这种算法不能防止死锁。由于线程无法控制资源获取顺序,因此存在循环等待的可能性,实际上可能导致死锁。
因此,鉴于此,将Java用作实时目的的编程语言(包括桌面和移动应用程序)是否真的安全?
我的问题不是按原样使用Java,Android或Linux。我的问题是关于RTSJ(优先级继承)选择的算法,因为它不能防止发生死锁。
答案 0 :(得分:1)
您想要什么 - 实时,桌面/移动?实时是像心脏起搏器这样的东西 - 这意味着如果计算机不能保证作业将在时间X完成,它甚至不会尝试运行它。它仅适用于已知所有任务的执行时间的系统。计算机(包括PC,Mac和Linux)不是实时的。由于Linux不是实时的,因此Android上没有任何内容。
至于实时Java一般 - 没有。没有任何具有非确定性垃圾收集的东西可以用于实时编程。