高度なJavaの(8) - 同時(マルチスレッドロック)

3ロックの種類、ロック方法、オブジェクトロック、ロッククラスがあります。(方法ロックオブジェクトのロックがある)
オブジェクトロック
オブジェクトがロック
パブリッククラスObject {
ReentrantLockの新しい新=();. JavaSE1.5 //サポートするためのパッケージを追加し、同期しているjava.util.concurrentのプライベート・ロックロック
ます。public void方法(){
同期(本){
System.out.printlnは( "私はロックオブジェクト");
}
}
}

公共同期のボイド法(){//ロックとして、このクラスの既定のインスタンスを使用
するSystem.out.println(「Iはまた、ターゲットロック方法ロックだ」);
}
このメカニズムは、クラスのインスタンスごとに、その同じ時間を確保し、その宣言のすべて効果的クラスの競合のアクセスメンバ変数を防止するように、唯一の実行可能ファイルのメンバーとしての機能を同期

第二のクラスは、ロック
同期ような静的メソッドが宣言されると、この方法でこのようなオブジェクトのすべてのインスタンスが同一を共有するように、起動され、専用メモリ及び初期化に静的クラス変数および静的負荷ロック、クラスロックと呼ばれます。
形式:
パブリッククラスObject {
公共静的ボイド同期メソッド(){
System.out.printlnは(「私はロックの最初のようなものでした」);
}
}

二つの形態:
パブリッククラスObject {
パブリックvoidメソッド(){
同期(object.this){
System.out.printlnは( "私は第2ロックタイプでした");
}
}
}

第三に、クラスロック
ReentrantLockの
Lock.lock()ロック取得は、ロックが取得されるまで、現在のスレッドが休止状態のままになります、未満である場合、現在のスレッドがロックを取得しようとする。
Lock.lockInterruptibly()ロックができれば、現在のスレッドがロックを取得することを可能にします直接、または現在のスレッドが発生した約2例まで休止状態のままになります返す:
現在のスレッドがロックを取得する
。他のスレッドが中断され、現在のスレッドが現在のスレッドがロック操作が許可されている取得中断
ロック。 tryLock()は、ロックが利用可能である場合は、ロックを取得しようと直接リターントゥーレ、ロックを獲得する。そうでなければ、直接リターン偽
Lock.tryLock(長時間、TimeUnitでユニット)が一定期間内にロックを取得しようとすると、ロックが利用可能である場合は、真の直接戻り、そうでない場合はタイムアウトリターンfasleの待つ
ロック解除しlock.unlockを()
)(Lock.newCondition

おすすめ

転載: blog.51cto.com/4397014/2436898