FileChannel.Lock メソッド

定義

オーバーロード

Lock()

このチャネルのファイルに対する排他ロックを取得します。

Lock(Int64, Int64, Boolean)

このチャネルのファイルの特定の領域に対するロックを取得します。

Lock()

このチャネルのファイルに対する排他ロックを取得します。

[Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")>]
member this.Lock : unit -> Java.Nio.Channels.FileLock

戻り値

新しく取得したロックを表すロック オブジェクト

属性

例外

ファイル チャネルが閉じられます。

このチャネルは書き込み用に開かれていません。

このロック要求と重複するロックが既に保持されているか、別のスレッドがこの要求と重複するロックの取得を待機しています。

呼び出し元のスレッドがロックの取得を待機している間に中断されました。

呼び出し元のスレッドがロックの取得を待機している間にチャネルが閉じられました。

要求されたロックの取得中に別の I/O エラーが発生した場合。

注釈

このチャネルのファイルに対する排他ロックを取得します。

フォーム fc.lock() のこのメソッドの呼び出しは、呼び出しとまったく同じ方法で動作します

fc.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)

java.nio.channels.FileChannel.lock()Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

Lock(Int64, Int64, Boolean)

このチャネルのファイルの特定の領域に対するロックを取得します。

[Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")>]
abstract member Lock : int64 * int64 * bool -> Java.Nio.Channels.FileLock

パラメーター

position
Int64

ロックされた領域を開始する位置。負以外である必要があります

size
Int64

ロックされたリージョンのサイズ。は負でない必要があり、合計 position + size は負でない必要があります

shared
Boolean

true 共有ロックを要求する場合は、このチャネルを読み取り (場合によっては書き込み) のために開く必要があります。 false 排他ロックを要求する場合は、このチャネルを書き込み (読み取り) 用に開く必要があります

戻り値

新しく取得したロックを表すロック オブジェクト

属性

例外

または size が負の場合position

このチャネルが閉じている場合は 。

要求されたリージョンが既存のロックまたは保留中のロック要求と重複している場合は 。

チャネルが読み取りモードで開かなくても共有が true の場合は 。

チャネルが書き込みモードで開かなくても共有が false の場合。

このメソッドの実行中に別のスレッドによってこのチャネルが閉じられている場合は 。

目的のファイル ロックを待機している状態でスレッドが中断された場合。

別の I/O エラーが発生した場合は 。

注釈

このチャネルのファイルの特定の領域に対するロックを取得します。

このメソッドの呼び出しは、リージョンがロックされるか、このチャネルが閉じられるか、呼び出し元のスレッドが中断されるまでブロックされます。どちらか早い方です。

このメソッドの呼び出し中にこのチャネルが別のスレッドによって閉じられると、 AsynchronousCloseException がスローされます。

呼び出し元のスレッドがロックの取得を待機している間に中断された場合、その割り込み状態が設定され、 FileLockInterruptionException がスローされます。 このメソッドの呼び出し時に呼び出し側の割り込み状態が設定されている場合、その例外はすぐにスローされます。スレッドの割り込み状態は変更されません。

パラメーターと size パラメーターでposition指定された領域は、実際の基になるファイル内に含まれている必要はありません。また、重複する必要もありません。 ロック領域のサイズは固定されています。ロックされた領域に最初にファイルの末尾が含まれており、ファイルが領域を超えて拡張された場合、ファイルの新しい部分はロックの対象になりません。 ファイルのサイズが大きくなり、ファイル全体のロックが必要な場合は、0 から始まり、ファイルの予想される最大サイズより小さい領域をロックする必要があります。 引数 #lock() 0 のメソッドは、サイズ Long#MAX_VALUEの領域をロックするだけです。

一部のオペレーティング システムでは共有ロックがサポートされていません。この場合、共有ロックの要求は排他ロックの要求に自動的に変換されます。 新しく取得したロックが共有されているか排他的であるかをテストするには、結果のロック オブジェクトの FileLock#isShared() isShared メソッドを呼び出します。

ファイル ロックは、Java 仮想マシン全体に代わって保持されます。 これらは、同じ仮想マシン内の複数のスレッドによるファイルへのアクセスを制御するのに適していません。

java.nio.channels.FileChannel.lock(long, long, boolean)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象