如何使用消费者找到生产者的地位

时间:2019-06-25 10:49:52

标签: java file consumer producer

我正在读取一个大文件,大约2 GB。但是我不知道作者是否已完全写入文件。有什么方法可以检查文件是否完全从读取器一侧写入?

2 个答案:

答案 0 :(得分:0)

没有任何代码,很难提出任何具体建议,但是为什么不扩展您用作编写器的任何类,并向其添加简单的CountDownLatch(我假设读者和编写器在两个不同的线程中运行),编写完成后调用countDown()吗?在读取器端,您只需使用闩锁的await方法。

答案 1 :(得分:0)

AFAIK,没有可移植的方法来执行此操作。但是,在Linux上,您可以通过运行lsof命令并处理其输出来测试某个其他进程是否打开了文件。

例如:

lsof /home/fred/someFile

将输出打开该文件的进程的pid。如果您可以假定正在写入文件的进程在完成写入后将其关闭(并且不会重新打开),则可以使用lsof输出来测试文件是否已被完全写入。

您可以使用lsof / Process从Java运行ProcessBuilder命令。