【发布时间】:2016-02-26 23:22:02
【问题描述】:
我正在开发一个需要读/写锁的 Java 程序。场景是多个进程可以同时写入文件。我已使用以下行来锁定文件。
FileOutputStream fos = new FileOutputStream(file);
FileLock lock = fos.getChannel().lock;
当多个进程尝试同时写入文件时,这可以正常工作。其他进程正在等待直到锁被释放。但是,其他进程仍然能够读取此文件,并且当它们打开 InputStreamReader 读取此文件时,正在写入此文件的初始进程停止并开始读取进程。我希望读取过程也能够同步。
有人可以帮我解决这个问题吗? (这在多个进程和线程上运行)
【问题讨论】:
-
查看documentation 会发现
lock()获得了排他锁。
标签: java multithreading locking fileoutputstream filelock