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)
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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
.
Регион, указанный position
size
параметрами, не должен содержаться внутри или даже перекрываться фактическим базовым файлом. Области блокировки фиксированы в размере; Если заблокированный регион изначально содержит конец файла, а файл выходит за пределы региона, то новая часть файла не будет охвачена блокировкой. Если ожидается, что размер файла увеличивается и блокировка всего файла требуется, то регион, начинающийся с нуля, и не меньше ожидаемого максимального размера файла, должен быть заблокирован. Метод с двумя аргументами #lock(Object,CompletionHandler)
просто блокирует область размера Long#MAX_VALUE
. Если блокировка, перекрывающая запрошенный регион, уже удерживается этой виртуальной машиной Java, или этот метод был вызван для блокировки перекрывающейся области, и эта операция не завершена, этот метод вызывается OverlappingFileLockException
.
Некоторые операционные системы не поддерживают механизм получения блокировки файлов асинхронным образом. Следовательно, реализация может получить блокировку файла в фоновом потоке или из задачи, выполняемой потоком в связанном пуле потоков. Если существует множество операций блокировки, то он может использовать потоки на виртуальной машине Java в течение неопределенных периодов.
Некоторые операционные системы не поддерживают общие блокировки, в этом случае запрос на общую блокировку автоматически преобразуется в запрос на монопольную блокировку. Можно ли проверить, является ли недавно приобретенная блокировка общим или эксклюзивным путем вызова метода результирующего объекта FileLock#isShared() isShared
блокировки.
Блокировки файлов хранятся от имени всей виртуальной машины Java. Они не подходят для управления доступом к файлу несколькими потоками в одной виртуальной машине.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.