クラスレベルのロックを取得するクラスがあるとします。クラスレベルのロックを達成するためには、クラス内に静的メソッドを必要とする必要がありますか、単純にsynchronized(MyClass.class)
を使用すると、静的メソッドを使用せずにそのジョブを実行します。Javaでのクラスレベルのロック
答えて
Class
オブジェクトを同期させると、そのトリックが実行されます。
また、クラスレベルのロックが同じクラスの異なるクラスレベルのロックを妨げないようにするには、プライベートな静的フィールドをロックに宣言します。例えば
public class MyClass {
private static final Object myLock = new Object();
private static final Object anotherLock = new Object();
...
}
ここでは、同じクラスに対して2つの異なる「クラスレベル」のロックがあります。
その場合、以下に書かれたこのコードは私のクラスレベルロックの目的を達成するでしょうか? 'クラスhere-- クラスB {同期(A.class) {--someコード を {フィールドまたはクラスのいずれかの方法で静的キーワードを使用せずにここで いくつかのコード}} } ' – user5451270
@ user5451270あなたが言っていることはうまくいくでしょうが、なぜそういったことをしたいのかわかりません。通常、静的メソッドの同期にはクラスレベルのロックが使用され、非静的メソッドの同期にはオブジェクトロックが使用されます。 – hagrawal
@ハグワール私はそれを使用していません。私はちょうどそれがそれであることを確かめたいと思った。 – user5451270
あなたにもReentrantLockのを使用することができます。
private static final Lock lock1 = new ReentrantLock();
public static void main(String... strings) {
lock1.lock();
//do Something
lock1.unlock();
}
- 1. クラスレベルのロックの取得方法
- 2. クラスレベルのJavaカスタム例外
- 3. Javaでのプロセスのロック
- 4. 、クラスレベル
- 5. のJavaロック条件
- 6. クラスレベル変数asp.netでのルーティング
- 7. ViewModelクラスレベルの検証
- 8. クラスレベルgetintent
- 9. Java Beanの検証:クラスレベルの制約を持つGroupSequence
- 10. 2 ProcessessでのJavaファイルのロック
- 11. Javaのスマートなロック機構
- 12. Javaでバイアスされたロック
- 13. クラスレベルでのデコレータの使用方法は?
- 14. Rubyのモジュールでクラスレベルのメソッドを作成
- 15. はクラスレベルのパブリックプロパティのスレッドセーフです
- 16. Javaで複数のオブジェクトをロックする
- 17. Seam/Hibernateのクラスレベル検証
- 18. Spring @ RequestSequenceクラスレベルの複数
- 19. クラスレベルとメソッドレベルの@Path設定
- 20. あるスレッドでJavaのロックを解除し、別のスレッドでロック解除
- 21. ViewModelクラスレベルでデータを取得
- 22. クラスレベルでの妥当性チェックSpringフォーム
- 23. はクラスレベルのプロパティまたはスレッドセーフです
- 24. Java Dominoエージェントのロック解除の制限
- 25. スレッド内のクラスレベルの変数へのアクセス
- 26. JavaファイルのロックとWindows - ロックは「絶対」ではありませんか?
- 27. ロックされたjavaファイルアンドロイドスタジオ
- 28. Javaロックとhappend-beforeの関係
- 29. Java:ロックの取得を監視
- 30. Java待機中ロックの使用
([Javaでは、クラス・レベルのロックは何]の可能性のある重複http://stackoverflow.com/questions/2462104/what-is-a-class -level-lock-in-java) – zombie