есть ли способ заблокировать чтение при достижении конца файла util, есть новые данные, записываемые в файл в java - PullRequest
1 голос
/ 04 августа 2020

У меня 2 java процессов, процесс A записывает данные в файл, процесс B читает данные из файла. Иногда процесс A не запущен, процессу B необходимо прочитать существующие данные из файла, поэтому я не могу использовать сокет вместо файла.

Проблема в том, что когда B достигает конца файла, функция чтения немедленно возвращается, если Я пытаюсь повторить попытку без sleep(), загрузка ЦП составляет 100%, даже если нет новых данных. Если я попробую с sleep(), время отклика и производительность будут неудовлетворительными.

Есть ли способ заблокировать чтение при достижении конца файла, пока в файл не будут записаны новые данные, как если бы я использовал сокет?

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте использовать WatchService API из пакета java .nio. Здесь вы можете создать наблюдателя для любых изменений в каталоге. Для разных модификаций будут разные события, в зависимости от которых вы можете запустить чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...