問題タブ [synchronized-block]
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の同期メソッドと同期ブロックの違いは何ですか?
Javaの同期メソッドと同期ブロックの違いは何ですか?
私はネットで答えを探していました、人々はこれについてとても確信が持てないようです:-(
私の考えでは、同期ブロックがスコープ内でよりローカライズされている可能性があり、したがってロックの時間が短くなることを除いて、2つの間に違いはありませんか?
そして、静的メソッドのロックの場合、ロックは何で行われますか?ロックオンクラスの意味は何ですか?
java - 同期ブロックに関する私の仮定は正しいですか?
同期されたブロックを持つメソッドのshout()があります。
このメソッドを実行するスレッドが 2 つある場合、2 つの「同期されたシャウト」が常に次々に表示されると仮定して正しいでしょうか? 「シンクロナイズド シャウト」の間に他のステートメントはありませんか?
java - Java同期書き込みブロック
Javaを初めて使用する場合、同期に関する質問があります。
私はネットワークに書き込むための次のコードを持っています(今のところ簡単な実装):
データ全体を一度に書き込んでいるので、ここで同期化されたブロックレベルが必要かどうか疑問に思いました。または競合状態の可能性はありますか?書き込むデータは複数のソースから来ているので、私は尋ねます。
ありがとうございました。
java - lockObjectで同期することと、これをロックとして使用することの違いは何ですか?
同期方式と同期ブロックの違いはわかりますが、同期ブロック部分についてはよくわかりません。
私がこのコードを持っていると仮定して
この場合、 lockObjectを使用することとこれをロックとして使用することの違いは何ですか?それは私にも同じようです。
同期ブロックを使用する場合、どのオブジェクトをロックするかをどのように決定しますか?
java - AtomicBoolean と同期ブロック
一部のsynchronized
ブロックをAtomicBoolean
.
の例を次に示しsynchronized
ます。
そして代替AtomicBoolean
:
の CAS プロパティを利用AtomicBoolean
すると、同期に依存するよりもはるかに高速になるはずなので、ちょっとしたマイクロ ベンチマークを実行しました。
10 個の同時スレッドと 1000000 回の反復の場合、ブロックAtomicBoolean
よりわずかに高速になります。synchronized
AtomicBoolean を使用した toggleCondition() に費やされた平均時間 (スレッドあたり): 0.0338
同期された状態で toggleCondition() に費やされた平均時間 (スレッドごと): 0.0357
マイクロベンチマークが価値があることは知っていますが、その差はもっと大きくなるべきではありませんか?
java - これでよろしいですか?Synchronized( thread ) の場合、同期ブロックで thread=null
私はこれを見る:
thread=null
ロックしたまま設定しても大丈夫ですか?
このナゲットは、BB コードの一部で見つかりました。
java - 同期を正しく使用するにはどうすればよいですか?
このコード:
AIOOBEをランダムにスローします。私が読んだことから、同期はそれを防ぐはずです、それで私は何が間違っているのですか?
編集:
AIOOBE =範囲外の配列インデックスの例外コードが不完全で、必要なものに切り詰められています。しかし、あなたを幸せにするために、OFFSETは4であり、最初に少しのデータを追加するforループがあると想像してください。そして、2番目のスレッドがリストを読み取ったり変更したりします。
編集2:
リストが描画されていて、現在のゲームが終了したときに発生することに気づきました。リストが空になったときに、draw-threadがすべての要素を描画したわけではありません。リストが空になるまでリストを空にして待つようにゲームに指示する方法はありますか?
編集3:
これがマルチスレッドの問題であるかどうかわからないことに気づきました。計算と描画用とユーザー入力用の2つのスレッドしかないようです。これについては、思ったよりも少し詳しく調べる必要があります。
synchronized-block - Javaでは、同期されたブロック内の戻り値は悪いスタイルのようです。それは本当に重要ですか?
弱参照のCollections.synchronizedList、_componentsがあります。
私は次のようなものを書きました。
しかし、コンパイラは完全に満足しています。List.add()はTRUEを返すことに注意してください。さて、同期されたブロックを終了するとロックが解除されますが、このルックは奇妙ではありませんか?これは、ループでreturnを使用するのと同じように、ブロックの「穴」のようなものです。
このようなコードを維持してよろしいですか?
objective-c - ミューテックスは、@synchronized ディレクティブを使用して呼び出しに到達すると、メイン スレッドのみをブロックします。
メインスレッドを含むsqlite3データベースに複数のスレッドが書き込むことができるマルチスレッドアプリケーションを構築しています。ミューテックスに使用する静的パブリック変数を宣言しました。
データベースに書き込む必要がある各メソッド内では、その変数を @synchronized ディレクティブと共に使用して、データベースに書き込むセクションをロックしています。
すべてが正常に機能しましたが、これらのメソッドのいずれかがメインスレッドから呼び出されると、ミューテックスが再びロック解除されるのを待ってフリーズすることがありますが、そうではありませんでした。問題は、これがメインスレッドとコードからのいくつかの呼び出しでのみ発生することですデータベースへの書き込みは間違いなく有限であるため、メインスレッドがミューテックスのロックが解除されるのを待ち続ける理由と、そもそもロックが解除されない理由を特定できませんでした。
注: このミューテックスによって他のスレッドはブロックされず、メインのみがブロックされました。
編集: performSelectorOnMainThread:waitUntilDone を使用して @synchronized ディレクティブを置き換えようとしました:
正常に動作していますが、ユーザーの操作をブロックしないように、メイン スレッドに多くの負荷がかからないようにしています。
どんな助けでも大歓迎です、そして前もって感謝します。