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)
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом 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. Они не подходят для управления доступом к файлу несколькими потоками на одной виртуальной машине.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.