同时写入JAVA中具有多个线程的单个文件,按行同步

时间:2015-04-02 15:18:21

标签: java multithreading file synchronization locking

我有一个模拟10X3阵列的文件。第一列是一个独特的序列ID号,所以我可以区分每一行。我问是否有可能同步2个线程在同一个文件中写入,根据它们的行来锁定它们(如果线程2写入同一行,则线程1无法访问该文件,线程1想要写入,他们可以同时写入其他行)。我有一个包含10个ReentrantLock()项的Lock数组,每个Lock项将锁定相应的id行(它们在搜索文件中的ID之前获取锁)。简单的方法是将文件加载到数组中。但我想知道我是否可以在文件中实现这一点。我不太深入了解文件在java中是如何工作的,但我主要担心的是,当它们同时在文件中写入时,最后结束的线程将给出文件的最终值,因此所做的任何更改都已完成到目前为止,其他线程将被删除,因为该文件需要保存。

1 个答案:

答案 0 :(得分:1)

有了一个文件,我认为这是不可能的,因为你提到的原因。

如果您真的想用纯文本文件执行此操作,则可以为每行创建一个文件。另一种选择是使用Document。完成所有工作后,应该很容易将文档解析为纯文本文件。

最简单的解决方案是在我看来使用数据库,特别是如果阵列有可能在以后增大。