Попытки получить блокировку в заданной области файла этого канала.
Этот метод не блокирует.Вызов всегда возвращается немедленно, либо установив блокировку в запрашиваемой области, либо не выполнив ее.Если ему не удается получить блокировку из-за того, что другая программа удерживает перекрывающуюся блокировку, возвращается нулевое значение.Если не удается получить блокировку по какой-либо другой причине, выдается соответствующее исключение.
Область, указанная параметрами position и size, не обязательно должна содержаться внутри или даже перекрывать фактический базовый файл.Блокировка областей фиксирована по размеру;если заблокированная область изначально содержит конец файла и файл выходит за пределы области, то новая часть файла не будет закрыта блокировкой.Если ожидается, что размер файла увеличится, и требуется блокировка всего файла, необходимо заблокировать область, начинающуюся с нуля и не меньшую, чем ожидаемый максимальный размер файла.Метод с нулевым аргументом tryLock()
просто блокирует область размером Long.MAX_VALUE
.
Некоторые операционные системы не поддерживают общие блокировки, и в этом случае запрос общей блокировки автоматически преобразуется в запрос наэксклюзивный замок.Независимо от того, является ли вновь приобретенная блокировка общей или исключительной, можно проверить, вызвав метод isShared результирующего объекта блокировки.
Блокировки файлов сохраняются от имени всей виртуальной машины Java.Они не подходят для управления доступом к файлу несколькими потоками на одной виртуальной машине.
Параметры: position - позиция, с которой должна начинаться блокированная область;должен иметь неотрицательный размер - размер заблокированной области;должно быть неотрицательным, а сумма позиции + размер должны быть неотрицательными для общего доступа - true для запроса общей блокировки, false для запроса исключительной блокировки Возвращает: объект блокировки, представляющий вновь полученную блокировку, или ноль, если блокировка моглане может быть получено, потому что другая программа содержит перекрывающуюся блокировку. Выдает: IllegalArgumentException
- если предварительные условия для параметров не выполняются ClosedChannelException
- если этот канал закрыт OverlappingFileLockException
- если блокировка, перекрывающая запрашиваемую область, уже удерживаетсяэта виртуальная машина Java, или если другой поток уже заблокирован в этом методе и пытается заблокировать перекрывающуюся область того же файла IOException
- если происходит какая-либо другая ошибка ввода / вывода См. также: lock()
, lock(long,long,boolean)
,tryLock()