次の方法で共有


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 ドキュメントjava.nio.channels.FileChannel.lock()

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

適用対象

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

ロックされた領域のサイズ。は負以外である必要があり、sum position + size は負以外である必要があります

shared
Boolean

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

戻り値

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

属性

例外

負の場合 positionsize 〗。

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

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

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

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

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

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

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

注釈

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

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

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

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

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

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

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

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

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

適用対象