Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让两个长时间运行的进程;“谈话”;通过文本文件相互连接_Java_Communication - Fatal编程技术网

Java 让两个长时间运行的进程;“谈话”;通过文本文件相互连接

Java 让两个长时间运行的进程;“谈话”;通过文本文件相互连接,java,communication,Java,Communication,我在不同的JVM上有两个(Java)进程重复运行。第一种是定期查找一些“信息”,并需要将其存储在某个地方。第二个进程定期读取这些信息以进行处理。间隔或多或少是随机的,因此进程1可能会找到三条信息,直到进程2读取它们为止,反之亦然 我的方法是将这些信息写入文本文件。但是我担心追加和读取文本文件会意外地同时发生,因此我会遇到锁。但是为每一条信息编写一个新的文本文件似乎有些过分 什么是更好的解决方案 编辑:对不起,我没有说清楚:java进程在不同的JVM中运行。他们无法直接看到对方。如果您小心处理文件

我在不同的JVM上有两个(Java)进程重复运行。第一种是定期查找一些“信息”,并需要将其存储在某个地方。第二个进程定期读取这些信息以进行处理。间隔或多或少是随机的,因此进程1可能会找到三条信息,直到进程2读取它们为止,反之亦然

我的方法是将这些信息写入文本文件。但是我担心追加和读取文本文件会意外地同时发生,因此我会遇到锁。但是为每一条信息编写一个新的文本文件似乎有些过分

什么是更好的解决方案


编辑:对不起,我没有说清楚:java进程在不同的JVM中运行。他们无法直接看到对方。

如果您小心处理文件,并且没有高更新率(例如每秒10次更新),则可以使用此功能

注意:您可以通过文件重命名而不是锁定来完成此操作

什么是更好的解决方案

几乎任何东西,所以不推荐东西,但在这种情况下,我可以推荐没有更具体要求的任何东西。例如,我可以推荐我的库,因为它是我写的,我确信它可以做你想做的事情,但是有很多可能的选择

我每分钟发送一行文字

因此,您可以为每条消息编写一个临时文件,完成后将其重命名。消费者可以有一个目录监视程序,以便在您完成此操作后立即知道。消费者可以在完成后删除该文件。这有一个开销,但不到10毫秒


如果要保留所有消息的记录,制作者还可以写入日志文件。

不要添加、追加。它们会重复或持续运行?这听起来像是制作者-消费者问题。请参见示例:@Ambrish查看我的编辑。@ChiefTwoPencils进程1由事件(重复)调用。进程2在结束后会重新启动,因此它或多或少是一个持续运行的进程。谢谢,但对于我的问题来说,这似乎太复杂了。我每分钟发送一行文字。