|
JavaTM 2 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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。