2010-05-20 5 views
1

Я пытаюсь использоватьВ Java Каков гарантированный способ получить FileLock из FileChannel при доступе к RandomAccessFile?

FileLock lock(long position, long size,boolean shared) 

в FileChannel объекта В соответствии с Javadoc он может бросить OverlappingFileLockException. Когда я создаю тестовую программу с 2-мя способами блокировки потоков, похоже, ждет, чтобы получить блокировку (как эксклюзивную, так и не эксклюзивную). Но когда число потоков увеличивается в acutal-сценарии по сравнению с притиркой блокировки блокировки файлов, и обработка замедляется из-за блока в таблице блокировки файлов.

Каков наилучший способ получить блокировку, исключающую OverlappingFileLockException?

ответ

0

Не допускайте совпадения областей. Вы также можете установить флаг shared на номер true. Но будьте осторожны, что общие блокировки зависят от ОС. Поэтому они могут быть недоступны во всех системах.

+0

Общий флаг может быть установлен как истинный во время чтения, но при записи он должен быть исключительной блокировкой. Поэтому общий должен быть ложным. В этом случае чтение и письмо выполняются. – nbhat

 Смежные вопросы

  • Нет связанных вопросов^_^