|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.nio.channels.FileLock
public abstract class FileLock
表示文件区域锁定的标记。
每次通过 FileChannel
类的 lock
或 tryLock
方法获取文件上的锁定时,就会创建一个文件锁定对象。
文件锁定对象最初是有效的。通过调用 release
方法、关闭用于获取该锁定的通道,或者终止 Java 虚拟机(以先到者为准)来释放锁定之前,该对象一直是有效的。可通过调用锁定的 isValid
方法来测试锁定的有效性。
文件锁定要么是独占的,要么是共享的。共享锁定可阻止其他并发运行的程序获取重叠的独占锁定,但是允许该程序获取重叠的共享锁定。独占锁定则阻止其他程序获取任一类型的重叠锁定。一旦释放某个锁定后,它就不会再对其他程序所获取的锁定产生任何影响。
可通过调用某个锁定的 isShared
方法来确定它是独占的还是共享的。某些平台不支持共享锁定,在这种情况下,对共享锁定的请求被自动转换为对独占锁定的请求。
单个 Java 虚拟机在某个特定文件上所保持的锁定是不重叠的。要测试某个候选锁定范围是否与现有锁定重叠,可使用 overlaps
方法。
文件锁定对象记录了在其文件上保持锁定的文件通道、该锁定的类型和有效性,以及锁定区域的位置和大小。只有锁定的有效性是随时间而更改的;锁定状态的所有其他方面都是不可变的。
文件锁定以整个 Java 虚拟机来保持。但它们不适用于控制同一虚拟机内多个线程对文件的访问。
构造方法摘要 | |
---|---|
protected |
FileLock(FileChannel channel,
long position,
long size,
boolean shared)
初始化此类的一个新实例。 |
方法摘要 | |
---|---|
FileChannel |
channel()
返回文件通道,此锁定保持在该通道的文件上。 |
boolean |
isShared()
判断此锁定是否为共享的。 |
abstract boolean |
isValid()
判断此锁定是否有效。 |
boolean |
overlaps(long position,
long size)
判断此锁定是否与给定的锁定区域重叠。 |
long |
position()
返回文件内锁定区域中第一个字节的位置。 |
abstract void |
release()
释放此锁定。 |
long |
size()
返回锁定区域的大小,以字节为单位。 |
String |
toString()
返回描述此锁定的范围、类型和有效性的字符串。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
protected FileLock(FileChannel channel, long position, long size, boolean shared)
channel
- 文件通道,此锁定保持在该通道的文件上position
- 文件中的位置,锁定区域从此位置开始;必须为非负数size
- 锁定区域的大小;必须为非负数,并且 position + size 的和必须为非负数shared
- 如果此锁定是共享的,则为 true,如果是独占的,则为 false
IllegalArgumentException
- 如果关于参数的前提不成立方法详细信息 |
---|
public final FileChannel channel()
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
- 如果发生 I/O 错误public final String toString()
Object
中的 toString
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。