假设我在一个程序中构建一个链表,然后在另一个程序中我必须访问它。 我怎么能这样做?
我尝试在一个程序中使用Java中的全局链表数据结构,但我似乎无法在另一个程序中访问它。我想在下一个程序中无法获得对链表的引用。
我该如何解决这个问题?
答案 0 :(得分:1)
你基本上不能只在一个程序中构建链表并将其完全传递给另一个程序,主要是因为两个程序的堆内存不同。
所以基本上你必须使用某种通信机制才能实现这一点。
1。首先,您可以在一个程序中构建链接列表,并使用RPC调用一次只发送一个节点到其他程序
2或使用链接列表所在的共享内存。通过使用某种机制(例如placement new
)强制分配在此共享内存块上发生。
当您在JVM中运行时。你正在跨java进程共享Java堆,我认为你可以使用基于RMI的机制来做到这一点。
答案 1 :(得分:0)
如果您只需要在Java程序中生成链接列表然后将其传递给另一个程序,则可以通过将列表放入外部表单来完成此操作。这可以是Java序列化对象(其他程序必须解释),也可以是XML,JSON,您自己设计的home-brew格式,或任意数量的其他格式。然后可以通过进程间通信(文件,套接字或@yair在其评论中提供的链接中描述的其他机制)将其传递给其他程序。
如果你需要在Java程序和其他程序之间进行某种双向交互,那么某种remote procedure call可能是最简单的ipc机制。