2

我们应用程序的平台是 Java 1.4.2。我们需要在这个版本的JVM(嵌入式系统)上运行某些认证应用。

其中一个应用程序正在创建一个线程 T1 来更新文件(通过写入文件)和另一个线程 T2,它应该读取更新的内容(T2 总是在 T1 之后启动)。

问题是写入线程 T1 被延迟,而读取线程 T2 正在读取不正确的数据。线程 T2 不检查文件内容是否已更新。

出于本讨论的目的,可以假设导致延迟的因素是不可修复的。我们无法更改应用程序,但可以更改 JVM 和本机层接口。

请建议在不更改应用程序的情况下序列化对文件的访问的解决方案。另外,请批评以下方法的可行性:在 JVM 中创建一个前瞻线程,该线程可以分析 java 字节码并序列化跨同一应用程序的多个线程对文件的访问。

4

1 回答 1

1

请批评以下方法的可行性:在 JVM 中创建一个前瞻线程,它可以分析 java 字节码并序列化跨同一应用程序的多个线程对文件的访问。

出于本讨论的目的,100% 不可行。如果你不能做一些简单的事情,比如升级一个有十年历史的 JVM 并为应用程序添加一点同步,那么你将无可救药地超出你的深度 (a) 修改 JVM (b) 向应用程序添加线程(我以为你说你不能修改它?)和 (c) 摆弄字节码,以及 (d) 维护由此产生的混乱。下一个人是否会被限制使用相同的“修改”1.4.2 JVM/添加的线程/生成的字节码?这在哪里停止?

相反,您应该寻求真正解决问题。其线程通过文件系统相互通信的应用程序被严重错误设计。不要让它变得更糟。

于 2013-10-10T07:30:43.813 回答