問題タブ [reentrantlock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java - ReentrantLockを使用して非同期でジョブを実行していますか?
以下のコードでは、job
を使用して一度に 1 つのジョブのみを実行できるようにしながら、実行することができますReentrantLock
。
このコードを変更してjob.call()
非同期に実行MyConcurrentJobException
し、スレッドを開始する前にクライアントに返す方法はありますか?
try/catch/finally ブロックを new でラップしようとしましたがThread
、同じスレッドで発生する必要があるため、unlock
lock
IllegalMonitorException
??
java - ほとんどのクラスが並行している場合のJavaでの競合の問題を見つける方法
yourkitプロファイラーを使用して、アプリケーション内の多くの競合の問題を見つけて解決しました。スレッド監視を使用して、ブロックされているスレッドを確認し、これらの問題の多くを解決しました。ただし、キットにはReentrantLocksがブロックまたは待機中として表示されません。では、競合の問題を実際に確認するために何ができるでしょうか。
同時構造を使用してほとんどの場所を修正したため、Yourkitモニターのプロファイリングは現在信頼できません。ここで、リエントラントロックの問題を含む競合の問題を見つけるのに役立つツールが必要です。
java - リエントラント ロックを静的にしてミューテックスにしますか?
Brian Goetz の著書『Java Concurrency in Practice』では、再入可能ロックの例が次のようにプログラムされています。
ただし、上記のコードを次のように変更するかどうかを知りたいです。
ロックがミューテックスとして機能するようになるか、不要で冗長な場合。
したがって、ロックが非公開、静的、および最終に設定された場合、このコードの機能は変化しますか?
よろしくお願いします。マット
java - Future.cancelとReentrantLocks
シナリオ
私はこのクラスを持っています。たとえばFoo
、その唯一の仕事は一連のタスクを順番に実行することです。シンプルに聞こえますよね?これらのタスクはすべて、独自の個別のスレッドで実行されます。Thread.join()
順次実行を確実にするために各タスクを単に呼び出す代わりに、それはとを使用ReentrantLock
しCondition
ます。例えば、
すべてのタスクの後に、waitForNotification()
が呼び出され、別のクラス、たとえばBar
、それをウェイクアップするのを待ちます。の唯一の仕事は、タスクが成功したか失敗しBar
たかをアプリケーションに通知する応答を処理することです。そうは言っても、次の2つのいずれかを実行します。
- スレッドを完全にキャンセル
getTask().cancel
します(つまり) - スレッドをウェイクします(つまり
getCondition().signal
)
アイテム2は問題なく機能しますが、アイテム1は機能しません。例えば、
スレッドをキャンセルする代わりに、スレッドを中断しているように見えるためFoo
、実行が続行されます。冗長性については申し訳ありませんが、私は皆さんに明確な画像を提供したいと思いました。助言がありますか?
java - この「完全に同期されていない」消費者プロデューサーの例を修正するにはどうすればよいですか
ReentrantLock および ConditionVariable クラスに慣れようとしています。私はこのScalaコードを実装しました(「Scala固有」のものは何もありません):
ListBuffer で 20 個の要素を生成してから読み取ろうとしています。出力が次のようになる傾向があるため、何かが欠けています。
しかし、私は何を知りません。データが追加されたときに Consumer に通知できるように ConditionVariable を使用していますが、最初にしか機能しないようで、その後、プロデューサーは終了するまで実行されます。ロボットワーカーのような方法ではなく、コンシューマープロデューサーの方法で実行するには、何を変更する必要がありますか? :)
python - multiprocessing > Manager() > RLock エラー:
リストに multiprocessing.Process オブジェクトのコレクションがあり、それらはすべて「プロセス セーフ キュー」と呼ばれるものの同じインスタンスを使用して、プロセス セーフ (スレッド セーフだがプロセスあり) の方法で通信します。スレッドの管理を担当する親プロセス。
子プロセスが何かをキューに入れようとすると、最初に multiprocessing.Manager > RLock を取得し、次にキューに書き込み、最後にロックを解放する ProcessSafeQueue().enqueue() を呼び出します。
この場合、それは子プロセスの pid でした。エラーのトレースバックは次のとおりです。
そして、実際のエラーは次のとおりです。
IOError: [Errno 11] リソースが一時的に利用できません
アプリケーションが約 7 時間正常に実行された後、なぜこのエラーが発生するのかを誰かが理解するのを手伝ってくれるかどうか疑問に思っています。
java - Javaロックと発生-関係前
javadocを正しく解釈しているかどうかはわかりません。ReentrantLock
メソッドを呼び出してロックを正常に取得した後を使用する場合lock
、同期されたブロックなしで任意のオブジェクトにアクセスでき、発生前の関係が魔法のように強制されますか?
と作業中のオブジェクトの間に関連性が見当たらないためReentrantLock
、安全に作業できるとは信じられません。しかし、これは事実ですか、それとも私はjavadocを間違って読んでいますか?
java - Javaで文字列を安全に設定/取得する方法は?
Java Stringクラスは不変でスレッドセーフであることを読みましたが、Stringsの参照割り当てがスレッドセーフであるかどうかについてはまだ混乱しています。
最初の質問:Foo.setString()
スレッドBが呼び出している間にスレッドAが呼び出した場合Foo.getString()
、次のコードはスレッドセーフですか?
2番目の質問: ReentrantLockを使用して、上記のコードがスレッドセーフでない場合、Foo.getString()
メソッドを作成するにはどうすればよいですか?
tryLock(timeout)機能を使用する必要があるため、ReentrantLockを使用する必要があります。
java - ReentrantLock のゲッターとセッターの同期
次のコードがあるとします。
リターンスピードXは大丈夫ですか?または、次のようにする必要があります。
どちらが正しい?それとも同等ですか?
spring-webflow - Spring Web Flow LockTimeoutException
Weblogic 10 クラスター環境で Spring Web Flow (2.0.9) を使用しています。そして本番環境では、多くのLockTimeoutException が発生しています: 30 秒後に会話ロックを取得できません。
ワンクリックしかない場合、またはサイト自体のホームページにアクセスしている場合に、上記の例外が発生する理由を理解しようとしています。
SWF で FlowController をロックしようとしているコードを見つけてください。私が理解できないのは、ロックがアクセスされているサーブレットにあるのか、それとも何か他のものなのか?
SWF で実際にロックされているリソースはどれですか?
ReentrantLock の概念を理解するには、以下のリンクを参照してください。
前もって感謝します。
例外スタック トレース
SWF でのロックの実装