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возвращает Future#get() get при успешном 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 License.

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

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 License.

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

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возвращает Future#get() get при успешном FileLock завершении.

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

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

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

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.

Область, указанная параметрами position и size , не обязательно должна содержаться в фактическом базовом файле или даже перекрываться. Области блокировки имеют фиксированный размер; Если заблокированная область изначально содержит конец файла и файл выходит за пределы региона, то новая часть файла не будет охвачена блокировкой. Если ожидается увеличение размера файла и требуется блокировка всего файла, то регион, начинающийся с нуля, и не меньше ожидаемого максимального размера файла, должен быть заблокирован. Метод с двумя аргументами #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 License.

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