java - Java中不同程序的并发读写

标签 java concurrency

我正在编写两个通过文本文件进行通信的程序。第一个程序写入文件,第二个程序读取文件。但是,当读取器程序尝试从文件中读取而写入器仍在写入并读取不一致的数据时,就会出现问题。有没有办法同步两个不同 JVM 的读/写?

最佳答案

经常使用的简单解决方案:

  1. 将文本写入到文件中,其名称与读者预期的名称不同。例如,如果预期的文件名是 abc.txt,则写入名为 abc.txt.temp 的文件。
  2. 写入完成后,将文件重命名为其预期名称。在大多数(尽管这是与平台相关的)文件系统上,同一目录中的文件重命名是原子的 - 它将立即发生。因此,在本例中,重命名是从 abc.txt.tmpabc.txt。您可以使用 java.io.File.renameTojava.nio.Files.move 方法进行重命名。

读者将只能看到 abc.txt 中完整写入的文件。

关于java - Java中不同程序的并发读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754965/

相关文章:

java - 创建以字符串形式出现的类的新实例并更新集合方法

java - Vert.X微服务: Multiple database access or using request-reply

java - 这种传递和修改 HashMap 的方式是线程安全的吗

java - RecursiveAction线程池大小

java - java中AtomicMarkableReference的 "get"方法实现背后的原因是什么?

java - 自动执行自定义 Maven 插件

java - 让 gson 不要在字段名称周围加上引号

Java 套接字第二次写入尝试失败

sockets - Netty并发和 "Connection reset by peer"

java - 如何避免数据库死锁