修改JVM以跨线程序列化文件访问

时间:2013-10-10 06:31:23

标签: java multithreading jvm

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

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

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

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

请提供解决方案,以序列化文件的访问权限,而无需更改应用程序。 另外,请批评以下方法的可行性: 在JVM中创建一个前瞻性线程,它可以分析java字节代码并序列化对同一应用程序的多个线程的文件的访问。

1 个答案:

答案 0 :(得分:1)

  

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

对于本讨论而言,100%不可行。如果你不能做一些简单的事情,比如升级一个已经使用了十年的JVM并在同一时间内为需要的应用程序添加一点同步,你将无可救药地超出你的深度(a)修改JVM (b)向应用程序添加线程(我以为你说你不能修改它?)和(c)摆弄字节码,以及(d)保持产生的混乱。下一个人是否会被限制使用相同的'修改'1.4.2 JVM /添加线程/生成的字节码?这会停在哪里?

相反,你应该寻找真正解决问题的方法。线程通过文件系统进行通信的应用程序严重错误设计。不要让它变得更糟。