Я работаю над программой на Java, где требуется блокировка чтения/записи. Сценарий - это несколько процессов, которые могут записываться в файл одновременно. Для блокировки файла я использовал следующую строку.Acquring блокировки чтения/записи в Java с использованием FileLock
FileOutputStream fos = new FileOutputStream(file);
FileLock lock = fos.getChannel().lock;
Это прекрасно работает, когда несколько процессов пытаются записать в файл одновременно. Другие процессы ждут, пока блокировка не будет отпущена. Тем не менее, другие процессы все еще могут прочитать этот файл, и когда они открывают InputStreamReader для чтения этого файла, начальный процесс, который записывает этот файл, останавливается и начинается процесс чтения. Я хочу, чтобы процесс чтения также был синхронизирован.
Может кто-нибудь помочь мне в этом. (Это работает на нескольких процессах, а также потоки)
Один взгляд на [документация] (https://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html#lock--) показал бы, что 'lock () 'получает эксклюзивный замок. – VGR