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


AsynchronousFileChannel.Lock Метод

Определение

Перегрузки

Lock()

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

Lock(Object, ICompletionHandler)

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

Lock(Int64, Int64, Boolean)

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

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

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

Lock()

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

[Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)]
public Java.Util.Concurrent.IFuture? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)>]
member this.Lock : unit -> Java.Util.Concurrent.IFuture

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

Future объект, представляющий ожидающий результат

Атрибуты

Комментарии

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

Этот метод инициирует операцию получения монопольной блокировки файла этого канала. Метод возвращает Future ожидающий результат операции. Future#get() get Метод Futureвозвращает успешное FileLock завершение.

Вызов этого метода выполняется точно так же, как вызов

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

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

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

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

Lock(Object, ICompletionHandler)

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

[Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Lock (Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
member this.Lock : Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

Параметры

attachment
Object

Объект для подключения к операции ввода-вывода; может быть null

handler
ICompletionHandler

Обработчик для использования результата

Атрибуты

Комментарии

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

Этот метод инициирует операцию получения блокировки в заданной области файла этого канала. Параметр handler — это обработчик завершения, который вызывается при получении блокировки (или сбой операции). Результат, переданный обработчику завершения, является результатом FileLock.

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

ch.{@link #lock(long,long,boolean,Object,CompletionHandler) lock}(0L, Long.MAX_VALUE, false, att, handler)

Документация по Java для java.nio.channels.AsynchronousFileChannel.lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>).

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

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

Lock(Int64, Int64, Boolean)

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

[Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)>]
abstract member Lock : int64 * int64 * bool -> Java.Util.Concurrent.IFuture

Параметры

position
Int64

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

size
Int64

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

shared
Boolean

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

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

Future объект, представляющий ожидающий результат

Атрибуты

Комментарии

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

Этот метод инициирует операцию получения блокировки в заданной области файла этого канала. Метод ведет себя точно так же, как #lock(long, long, boolean, Object, CompletionHandler) метод, за исключением того, что вместо указания обработчика завершения этот метод возвращает Future ожидающий результат. Future#get() get Метод Futureвозвращает успешное FileLock завершение.

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

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

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

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

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

[Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Lock (long position, long size, bool shared, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Lock : int64 * int64 * bool * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

Параметры

position
Int64

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

size
Int64

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

shared
Boolean

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

attachment
Object

Объект для подключения к операции ввода-вывода; может быть null

handler
ICompletionHandler

Обработчик для использования результата

Атрибуты

Комментарии

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

Этот метод инициирует операцию получения блокировки в заданной области файла этого канала. Параметр handler — это обработчик завершения, который вызывается при получении блокировки (или сбой операции). Результат, переданный обработчику завершения, является результатом FileLock.

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

Некоторые операционные системы не поддерживают механизм получения блокировки файлов асинхронным образом. Следовательно, реализация может получить блокировку файла в фоновом потоке или из задачи, выполняемой потоком в связанном пуле потоков. Если существует множество операций блокировки, то он может использовать потоки на виртуальной машине Java в течение неопределенных периодов.

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

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

Документация по Java для java.nio.channels.AsynchronousFileChannel.lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>).

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

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