2个java进程 - 一个读取和一个写入同一个文件

时间:2011-05-18 12:20:36

标签: java file

我有两个java进程,我希望它们彼此完全分离。

我认为最好的方法是让一个人将数据写入文件,另一个人从该文件中读取数据(第二个也可能要写入文件说它处理了该行)。

我设想的问题是对文件的同时访问。我可以使用一个很好的简单模式来解决这个问题吗?是否有一个处理这种功能的库?

描述它的最佳方式是使用文件实现的简单直接消息传递机制。 (比JMS简单)。

谢谢Dan

5 个答案:

答案 0 :(得分:1)

如果你想要一个简单的解决方案,你可以假设“重命名文件”是一个原子操作(这不完全正确),每个进程都可以在读取或写入文件时重命名该文件,并在重命名时重命名它结束了。另一个将找不到该文件,并将等到文件出现。

答案 1 :(得分:0)

你的意思是命名管道吗?它是可能的,但除非你使用非可移植进程,否则java不允许创建管道

答案 2 :(得分:0)

如果您没有锁定基于文件的解决方案,数据库可以解决您的问题 每条记录都是写作过程写的一行。记录中的单个列将不受影响,并且读取过程将使用它来指示它使记录变红。

当然,你必须在表变大或分区之前处理表的清理,这样读取过程就很容易在其中查找信息。

如果你必须使用一个文件 - 你可以想到另一个文件只有读者进程读取的记录的ID - 这样你就不需要在同一个文件上同时写入进程了

答案 3 :(得分:0)

您要求的功能正是JMS所做的。 JMS是一个具有许多实现的API。你能不能只使用轻量级的实现?我不明白为什么你认为这是“复杂的”。当你有可靠地实施解决方案时,你会发现处理所有边缘情况并非易事。

答案 4 :(得分:0)

如果我不明白你的问题,请纠正我......

你为什么不看文件锁?当程序获得锁定时,另一个程序等待锁定被释放