機能myFunc()
を複数のスレッドから実行することを隔離する必要があります。私はMutex
でこのタスクを解決する方法を知っています。 Java 1.4
はサポートしていないので、別の方法でこのタスクを解決する方法はMutex
ですか?Java 1.4のミューテックス
答えて
Javaでは、すべてのオブジェクトに固有のロックがあります。これはモニターロックとも呼ばれます。これは簡単な相互排除を提供するのには十分ですが、それには限界があります。
public final class MyClass1 {
public synchronized void myFunc() {
// Exclusive work here
}
}
法上のキーワードは、myFuncというを実行する前にMyClass1オブジェクトインスタンスの固有ロックを取得しなければならないことを意味しています。
public static final class MyClass2 {
private final Object mutex = new Object();
public void myFunc() {
synchronized (mutex) {
// Exclusive work here
}
// There is no mutual exclusion here
}
}
ブロック内のブロックは、ブロックのスコープに対して同期させることができます。これにより、オブジェクトを選択してロックを取得することもできます。
組み込みロックは最終的に取得されるか、スレッドがハングします。固有のロックを取得しようとすると、タイムアウトになることはなく、中断することはできません。
固有のロックはリエントラントなので、スレッド自体がデッドロックする心配はありません。異なる順序でロックを取得すると、デッドロックが発生する可能性があります。
synchronizedキーワードを使用すると、同じオブジェクトをロックする同期コードで両方の読み取りと書き込みが行われた場合でもメモリの可視性が保証されます。
https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html https://docs.oracle.com/javase/tutorial/essential/concurrency/memconsist.html
また、現在の情報の1.4そんなには適用されませんので、Javaのメモリモデルが変更されたことを知っている必要があります。
... Javaのバージョンをアップグレードするために最大の努力を入れてください。複数の同期メソッドがある場合、インスタンスでロックするメソッドを同期すると、問題が発生する可能性があります。 –
- 1. Java 1.5+ 1.4へのバックポート
- 2. java 1.4のSSL互換性
- 3. spring rmi java 1.4およびjava 1.5
- 4. ミューテックス
- 5. Java 1.4のJarファイルの依存関係
- 6. Java 1.4の工場の質問
- 7. Java 1.5から1.4の書き換え
- 8. セマフォ(ミューテックス)のトラブル
- 9. Silverlightのミューテックス
- 10. Java 1.4でWindowsシステム変数にアクセス
- 11. ミューテックスのプライベートメンバーとのミューテックスの奇妙なエラー
- 12. 1.4用にコンパイルされたJavaコードを1.4 JREでコンパイルするには?
- 13. ミューテックスの使い方
- 14. Perlのプロセス間ミューテックス
- 15. ロック複数のミューテックス
- 16. ミューテックスのアクセスやシステムコール
- 17. ミューテックス付きスレッドセーフコード
- 18. DLLミューテックス - 例
- 19. ミューテックス理解
- 20. Java 1.4プロジェクトはJava 7と互換性がありますか?
- 21. symfony 1.4のcompenentsをsymfony 1.4で使用
- 22. 原子変数を使ってJavaでミューテックスを実装する
- 23. C++ゲッター/セッター、ミューテックス、ファイングレインロック
- 24. ブーストプロセス間ミューテックスとブーストスレッドミューテックス
- 25. ミューテックスとスレッド:説明
- 26. FreeRTOSミューテックス、複数のタスク
- 27. ミューテックスとセマフォの差= 1?
- 28. C++のミューテックスBEFORE C++ 11
- 29. 非対称ミューテックスの概念
- 30. コピーオブジェクト - symfonyの1.4
私は同期の方法に比べて、最終的なオブジェクトのロックを好む – mks