Поделиться через


FileChannel.Lock Метод

Определение

Перегрузки

Lock()

Получает монопольную блокировку файла этого канала.

Lock(Int64, Int64, Boolean)

Получает блокировку в заданном регионе файла этого канала.

Lock()

Получает монопольную блокировку файла этого канала.

[Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")>]
member this.Lock : unit -> Java.Nio.Channels.FileLock

Возвращаемое значение

Объект блокировки, представляющий только что полученную блокировку

Атрибуты

Исключения

Файловый канал закрыт.

этот канал не был открыт для записи.

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

вызывающий поток был прерван во время ожидания получения блокировки.

канал был закрыт, пока вызывающий поток ждал получения блокировки.

Если при получении запрошенной блокировки возникает другая ошибка ввода-вывода.

Комментарии

Получает монопольную блокировку файла этого канала.

Вызов этого метода формы fc.lock() ведет себя точно так же, как вызов

fc.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)

Документация по Java для java.nio.channels.FileChannel.lock().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к

Lock(Int64, Int64, Boolean)

Получает блокировку в заданном регионе файла этого канала.

[Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")>]
abstract member Lock : int64 * int64 * bool -> Java.Nio.Channels.FileLock

Параметры

position
Int64

Позиция, с которой начинается заблокированный регион; должно быть не отрицательным

size
Int64

Размер заблокированного региона; должен быть не отрицательным, и сумма position>+>size должна быть не отрицательной.

shared
Boolean

true чтобы запросить общую блокировку, в этом случае этот канал должен быть открыт для чтения (и, возможно, записи); false чтобы запросить монопольную блокировку, в этом случае этот канал должен быть открыт для записи (и, возможно, чтения)

Возвращаемое значение

Объект блокировки, представляющий только что полученную блокировку

Атрибуты

Исключения

Значение , если position или size отрицательное.

Значение , если этот канал закрыт.

Если запрошенный регион перекрывает существующий запрос блокировки или ожидающего блокировки.

Значение true, если канал не открыт в режиме чтения, но общий доступ имеет значение true.

Значение false, если канал не открыт в режиме записи, но общий доступ имеет значение false.

Значение , если этот канал закрыт другим потоком во время выполнения этого метода.

Значение , если поток прерван в состоянии ожидания требуемой блокировки файла.

Если возникает другая ошибка ввода-вывода.

Комментарии

Получает блокировку в заданном регионе файла этого канала.

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

Если этот канал закрывается другим потоком во время вызова этого метода, AsynchronousCloseException создается исключение.

Если вызывающий поток прерван во время ожидания получения блокировки, его состояние прерывания будет задано, и FileLockInterruptionException будет создано исключение. Если состояние прерывания вызывающего объекта задано при вызове этого метода, то это исключение будет создано немедленно; Состояние прерывания потока не изменится.

Регион, указанный positionsize параметрами, не должен содержаться внутри или даже перекрываться фактическим базовым файлом. Области блокировки фиксированы в размере; Если заблокированный регион изначально содержит конец файла, а файл выходит за пределы региона, то новая часть файла не будет охвачена блокировкой. Если ожидается, что размер файла увеличивается и блокировка всего файла требуется, то регион, начинающийся с нуля, и не меньше ожидаемого максимального размера файла, должен быть заблокирован. Метод нулевого аргумента #lock() просто блокирует область размера Long#MAX_VALUE.

Некоторые операционные системы не поддерживают общие блокировки, в этом случае запрос на общую блокировку автоматически преобразуется в запрос на монопольную блокировку. Можно ли проверить, является ли недавно приобретенная блокировка общим или эксклюзивным путем вызова метода результирующего объекта FileLock#isShared() isShared блокировки.

Блокировки файлов хранятся от имени всей виртуальной машины Java. Они не подходят для управления доступом к файлу несколькими потоками в одной виртуальной машине.

Документация по Java для java.nio.channels.FileChannel.lock(long, long, boolean).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к