FileLock クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ファイルの領域のロックを表すトークン。
[Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)]
public abstract class FileLock : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)>]
type FileLock = class
inherit Object
interface IAutoCloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 継承
- 属性
- 実装
注釈
ファイルの領域のロックを表すトークン。
ファイル ロック オブジェクトは、 クラスAsynchronousFileChannel#lock(long,long,boolean,Object,CompletionHandler) lock
AsynchronousFileChannel#tryLock(long,long,boolean) tryLock
の メソッドまたは クラスの メソッドまたは FileChannel#tryLock(long,long,boolean) tryLock
メソッドのいずれかをFileChannel#lock(long,long,boolean) lock
使用して、ファイルに対してロックがFileChannel
取得されるたびに作成されますAsynchronousFileChannel
。
ファイル ロック オブジェクトは、最初は有効です。 ロックが解除されるまでは、メソッドの呼び出し #release release
、取得に使用されたチャネルを閉じること、または Java 仮想マシンの終了のいずれか早い方で有効なままになります。 ロックの有効性は、その #isValid isValid
メソッドを呼び出すことによってテストできます。
ファイル ロックは 排他 ロックまたは 共有ロックです。 共有ロックを使用すると、同時に実行されている他のプログラムが重複する排他ロックを取得できなくなりますが、重複する共有ロックを取得できます。 排他ロックを使用すると、他のプログラムがいずれかの種類の重複ロックを取得できなくなります。 いったん解放されると、ロックは他のプログラムによって獲得される可能性のあるロックに対してそれ以上の影響を与えるわけではありません。
ロックが排他的であるか共有されているかは、その #isShared isShared
メソッドを呼び出すことによって決定できます。 一部のプラットフォームでは共有ロックがサポートされていません。その場合、共有ロックの要求は排他ロックの要求に自動的に変換されます。
1 つの Java 仮想マシンによって特定のファイルに保持されているロックは重複しません。 メソッドを #overlaps overlaps
使用して、候補のロック範囲が既存のロックと重複するかどうかをテストできます。
ファイル ロック オブジェクトは、ロックが保持されているファイルのファイル チャネル、ロックの種類と有効性、ロックされた領域の位置とサイズを記録します。 ロックの有効性のみが時間の経過と同時に変更される可能性があります。ロックの状態の他のすべての側面は不変です。
ファイル ロックは、Java 仮想マシン全体に代わって保持されます。 これらは、同じ仮想マシン内の複数のスレッドによるファイルへのアクセスを制御するのに適していません。
ファイル ロック オブジェクトは、複数の同時実行スレッドで使用しても安全です。
"pdep"><h2> Platform dependencies </h2>
このファイル ロック API は、基になるオペレーティング システムのネイティブ ロック機能に直接マップすることを目的としています。 したがって、ファイルに保持されているロックは、それらのプログラムが書き込まれる言語に関係なく、ファイルにアクセスできるすべてのプログラムに対して表示される必要があります。
ロックによって別のプログラムがロック領域の内容にアクセスできないようにするかどうかは、システムに依存するため、指定されていません。 一部のシステムのネイティブ ファイル ロック機能は単なる アドバイザリです。つまり、データの整合性を保証するには、プログラムが既知のロック プロトコルを協調的に監視する必要があります。 他のシステムでは、ネイティブファイルロックは 必須です。つまり、あるプログラムがファイルの領域をロックすると、他のプログラムは実際にはロックに違反する方法でその領域にアクセスできなくなります。 ただし、他のシステムでは、ネイティブ ファイル ロックがアドバイザリか必須かは、ファイルごとに構成できます。 プラットフォーム間で一貫した正しい動作を保証するために、この API によって提供されるロックは、アドバイザリ ロックであるかのように使用することを強くお勧めします。
一部のシステムでは、ファイルの領域に対して必須のロックを取得すると、そのリージョンが 、 になり java.nio.channels.FileChannel#map <i>mapped into memory</i>
、その逆もできなくなります。 ロックとマッピングを組み合わせたプログラムは、この組み合わせが失敗するように準備する必要があります。
一部のシステムでは、チャネルを閉じると、そのチャネルを介してロックが取得されたか、同じファイルで開かれている別のチャネルを介してロックが取得されたかに関係なく、基になるファイル上の Java 仮想マシンによって保持されているすべてのロックが解放されます。 プログラム内では、特定のファイルのすべてのロックを取得するために一意のチャネルを使用することを強くお勧めします。
一部のネットワーク ファイルシステムでは、ロックされた領域がページアラインされ、基になるハードウェアのページ サイズの倍数全体である場合にのみ、メモリ マップファイルでファイル ロックを使用できます。 一部のネットワーク ファイルシステムでは、特定の位置を超えて拡張されるリージョン (多くの場合、2 sup 30</sup> または 2<<sup>>31</sup>) にファイル ロックが実装されていません。 一般に、ネットワーク ファイルシステムに存在するファイルをロックするときは、細心の注意を払う必要があります。
1.4 で追加されました。
の Java ドキュメント java.nio.channels.FileLock
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
FileLock(AsynchronousFileChannel, Int64, Int64, Boolean) |
このクラスの新しいインスタンスを初期化します。 |
FileLock(FileChannel, Int64, Int64, Boolean) |
このクラスの新しいインスタンスを初期化します。 |
FileLock(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
IsShared |
このロックが共有されているかどうかを示します。 |
IsValid |
このロックが有効なファイル ロックであるかどうかを示します。 |
JniIdentityHashCode |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
JniPeerMembers |
ファイルの領域のロックを表すトークン。 |
PeerReference |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 |
ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 |
メソッド
AcquiredBy() |
このロックが取得されたファイルのチャネルを返します。 |
Channel() |
このロックが取得されたファイルのファイル チャネルを返します。 |
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
Close() |
このメソッドは、 メソッドを |
Dispose() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
Dispose(Boolean) |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
JavaFinalize() |
ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。 (継承元 Object) |
Overlaps(Int64, Int64) |
このロックが特定のロック範囲と重複するかどうかを示します。 |
Position() |
ロックされた領域の最初のバイトのファイル内の位置を返します。 |
Release() |
このロックを解除します。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
Size() |
ロックされた領域のサイズをバイト単位で返します。 |
ToArray<T>() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
ToString() |
このロックの範囲、型、および有効性を説明する文字列を返します。 |
UnregisterFromRuntime() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。 (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.Finalized() |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
ファイルの領域のロックを表すトークン。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
ファイルの領域のロックを表すトークン。 |
GetJniTypeName(IJavaPeerable) |
ファイルの領域のロックを表すトークン。 |