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.