近日做一个工程需要用到UDP广播收发信息,我把收到的消息放到一个数组中,作为共享数组让其他的java程序访问。现在我有一个疑问:其他的java程序是放在另一个工程中的,也就是我要访问共享数组里的数据,需要另外打开一个java程序,它们的共享机制有么有什么好方法实现??(简单一点说:两个不同的java应用程序访问同一块内存中的数组,有什么方法可以找到这块内存的地址,求实现的机制)紧急!紧急!

解决方案 »

  1.   

    我开始用文本文件存储状态码,作为数据共享层,但是java程序读文本文件(有很多个存储状态的文本文件)CPU的占用率太大,并且速度也很慢。由此我才想把文本文件中的状态码以数组的形式放到内存中,这样开辟一块共享内存让其它的java应用程序也可以取得数据,从速度上来说要比从文本文件读数据快上很多倍。
      

  2.   

    如果两个 Java 程序是分别执行的,那么它们就是运行在两个不同的 JVM 中,此时如果要共享数据,只能通过外部手段(指 JVM 外部,比如文件、socket 通信,这些上面都提到过。另外,如果是 Windows 操作系统,可以通过 JNI 使用 File-Mapping,效率满高的)。但这些方法都比较麻烦。如果能通过某个 Java 程序把这两个程序加载起来,那它们就是运行在同一个 JVM 里,问题就简单多了。
      

  3.   

    没有什么好办法,还是用文件转把,用xml