Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class FileLock extends Object implements AutoCloseable
Объект блокировки файла создается каждый раз, когда блокировка получается на файле через один из lock
или tryLock
методы FileChannel
класс, или lock
или tryLock
методы AsynchronousFileChannel
класс.
Объект блокировки файла первоначально допустим. Это остается допустимым, пока блокировка не выпускается, вызывая release
метод, закрывая канал, который использовался, чтобы получить это, или завершением виртуальной машины Java, какой бы ни на первом месте. Законность блокировки может быть протестирована, вызывая isValid
метод.
Блокировка файла является или монопольной или совместно используемой. Коллективная блокировка препятствует тому, чтобы другие одновременно рабочие программы получили перекрывающуюся монопольную блокировку, но действительно позволяет им получать перекрывающиеся коллективные блокировки. Монопольная блокировка препятствует тому, чтобы другие программы получили перекрывающуюся блокировку любого типа. Как только это выпускается, блокировка не имеет никакого дальнейшего эффекта на блокировки, которые могут быть получены другими программами.
Является ли блокировка монопольной, или совместно используемый может быть определен, вызывая isShared
метод. Некоторые платформы не поддерживают коллективные блокировки, когда запрос на коллективную блокировку автоматически преобразовывается в запрос на монопольную блокировку.
Блокировки держались, определенный файл единственной виртуальной машиной Java не накладывается. overlaps
метод может использоваться, чтобы протестировать, перекрывает ли диапазон блокировки кандидата существующую блокировку.
Объект блокировки файла записывает канал файла, на файл которого блокировка сохранена, тип и законность блокировки, и позиция и размер заблокированной области. Только законность блокировки подвержена изменениям в течение долгого времени; все другие аспекты состояния блокировки являются неизменными.
Блокировки файла сохранены от имени всей виртуальной машины Java. Они не являются подходящими для того, чтобы управлять доступом к файлу многократными потоками в пределах той же самой виртуальной машины.
Объекты блокировки файла безопасны для использования многократными параллельными потоками. Зависимости от платформы
Этот API захвата файла предназначается, чтобы отобразиться непосредственно на собственное средство блокировки базовой операционной системы. Таким образом блокировки держались, файл должен быть видимым ко всем программам, у которых есть доступ к файлу, независимо от языка, на котором пишутся те программы.
Препятствует ли блокировка фактически тому, чтобы другая программа получила доступ к контенту заблокированной области, является системно-зависимым и поэтому неуказанным. Собственные средства захвата файла некоторых систем являются просто консультацией, означая, что программы должны совместно наблюдать известный протокол блокировки, чтобы гарантировать целостность данных. На других системах собственные блокировки файла обязательны, означая, что, если одна программа блокирует область файла тогда, другим программам фактически препятствуют получить доступ к той области в пути, который нарушил бы блокировку. На все же других системах, являются ли собственные блокировки файла консультацией или обязательный, конфигурируемо на основе на файл. Чтобы гарантировать непротиворечивое и корректное поведение через платформы, строго рекомендуется, чтобы блокировки, обеспеченные этим API, использовались, как будто они были консультативными блокировками.
На некоторых системах, получая обязательную блокировку на области файла препятствует тому, чтобы та область была mapped into memory
, и наоборот. Программы, которые комбинируют блокировку и отображение, должны быть подготовлены к этой комбинации перестать работать.
На некоторых системах, закрывая канал выпускает все блокировки, сохраненные виртуальной машиной Java на базовом файле независимо от того, были ли блокировки получены через тот канал или через другой канал, открытый на том же самом файле. Строго рекомендуется, чтобы в пределах программы уникальный канал использовался, чтобы получить, все соединяет любой данный файл.
Некоторые сетевые файловые системы разрешают захвату файла использоваться с отображенными на память файлами только, когда заблокированные области выравниваются страницей и целое кратное число размера страницы используемого оборудования. Некоторые сетевые файловые системы не реализуют файл, соединяет области, которые расширяются мимо определенной позиции, часто 230 или 231. Вообще, большая забота должна быть проявлена, блокируя файлы, которые находятся на сетевых файловых системах.
Модификатор | Конструктор и Описание |
---|---|
protected |
FileLock(AsynchronousFileChannel channel, long position, long size, boolean shared)
Инициализирует новый экземпляр этого класса.
|
protected |
FileLock(FileChannel channel, long position, long size, boolean shared)
Инициализирует новый экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
Канал |
acquiredBy()
Возвращает канал, на файл которого была получена эта блокировка.
|
FileChannel |
channel()
Возвращает канал файла, на файл которого была получена эта блокировка.
|
void |
close()
Этот метод вызывает
release() метод. |
boolean |
isShared()
Говорит, совместно используется ли эта блокировка.
|
abstract boolean |
isValid()
Говорит, допустима ли эта блокировка.
|
boolean |
overlaps(long position, long size)
Говорит, перекрывает ли эта блокировка данный диапазон блокировки.
|
long |
position()
Возвращает позицию в пределах файла первого байта заблокированной области.
|
abstract void |
release()
Выпуски эта блокировка.
|
long |
size()
Возвращает размер заблокированной области в байтах.
|
Строка |
toString()
Возвращает строку, описывающую диапазон, введите, и законность этой блокировки.
|
protected FileLock(FileChannel channel, long position, long size, boolean shared)
channel
- Канал файла, на файл которого сохранена эта блокировкаposition
- Позиция в пределах файла, в котором запускается заблокированная область; должно быть неотрицательнымsize
- Размер заблокированной области; должно быть неотрицательным, и сумма position + , size должен быть неотрицательнымshared
- true, если эта блокировка совместно используется, false, если это является монопольнымIllegalArgumentException
- Если предварительные условия на параметрах не содержатprotected FileLock(AsynchronousFileChannel channel, long position, long size, boolean shared)
channel
- Канал, на файл которого сохранена эта блокировкаposition
- Позиция в пределах файла, в котором запускается заблокированная область; должно быть неотрицательнымsize
- Размер заблокированной области; должно быть неотрицательным, и сумма position + , size должен быть неотрицательнымshared
- true, если эта блокировка совместно используется, false, если это является монопольнымIllegalArgumentException
- Если предварительные условия на параметрах не содержатpublic final FileChannel channel()
Этот метод был заменен acquiredBy
метод.
null
если блокировка файла не была получена каналом файла.public Channel acquiredBy()
public final long position()
Заблокированная область не должна содержаться в пределах, или даже наложиться, фактический базовый файл, таким образом, значение, возвращенное этим методом, может превысить текущий размер файла.
public final long size()
Заблокированная область не должна содержаться в пределах, или даже наложиться, фактический базовый файл, таким образом, значение, возвращенное этим методом, может превысить текущий размер файла.
public final boolean isShared()
public final boolean overlaps(long position, long size)
public abstract boolean isValid()
Объект блокировки остается допустимым, пока он не выпускается, или связанный канал файла закрывается, какой бы ни на первом месте.
public abstract void release() throws IOException
Если этот объект блокировки допустим, тогда вызов этого метода выпускает блокировку и представляет недопустимый объект. Если этот объект блокировки недопустим, тогда вызов этого метода не имеет никакого эффекта.
ClosedChannelException
- Если канал, который использовался, чтобы получить эту блокировку, больше не открытIOException
- Если ошибка ввода-вывода происходитpublic final void close() throws IOException
release()
метод. Это было добавлено к классу так, чтобы это могло использоваться в соединении с автоматической блочной конструкцией управления ресурсами.close
в интерфейсе AutoCloseable
IOException
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.