問題タブ [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 - 慣例によりシングルトンであるべきオブジェクトで必要な同期
クラス Engine を介して Format1 というクラスのインスタンスを 1 つだけ返す必要があります。
これにより、getFormat を介して Format の正しいインスタンスが 1 つだけ返されることが保証されますか?
また、getFormat() を呼び出すクライアントは、フォーマット オブジェクト (まったく状態を持たない) でメソッドを実行する必要がありますが、メソッドに ByteBuffer を渡します (この ByteBuffer は変更される可能性があります)。
同期された構造 here/like this はシリアライズ可能性を保証しますか?
PS:私はJavaに非常に慣れていません。私が読んだ限り、メソッドを同期させることもできましたが、チェック(結果== null)もクリティカルセクションに含める必要があると思うので、同期(objを使用することにしました) 代わりに構築します。これがばかげた質問である場合はご容赦ください。しかし、私の疑問を確認したいと思います。
java - Java での同期 - Vector と ArrayList
スレッドセーフの観点から、Vector クラスと ArrayList クラスの違いを理解しようとしています。ベクトルはおそらく内部的に同期されています。各要素ごとに同期されていますか、それとも全体として同期されていますか? (複数のスレッドが同時にベクトルにアクセスできるケースは想像できましたが、複数のスレッドが同じ要素に同時にアクセスすることはできませんでした)。以下のコードを見ると、私の知る限りでは、キーワードがメソッド シグネチャで使用されると、それを含むクラス オブジェクト (のインスタンス) で同期されるため、getAo()
は と同等ではありません。ただし、と同等ですか?同等とは、つまりgetV()
synchronized
VectorVsArrayList
getAoSync()
getV()
ao
インスタンス変数は、getter メソッドを介してすべてのアクセスが行われる限り、同期に関して Vector オブジェクトのように動作し始めますか?
java - 同期ブロックでのオブジェクト参照式の意味
ここでの同期ブロックに対するオブジェクト参照表現の意味を誰かが説明できますか?
ここのように、同期ブロックの resource1 はここで何をしていますか?
java - Synchronized(ClassName.class) と書く理由
シングルトンパターンで質問があります。シングルトンパターンでは、次のように記述します
書く目的は何ClassName.class
ですか?
java - 2 つの異なる実行ブロック間のシンクロナイザー
クライアント ログイン タスクを検出すると、メッセージ処理タスクは NEW メッセージの処理を停止する必要があります。ただし、メッセージ プロセッサは、一時停止する前に処理していたタスクを完了する必要があります。これは基本的に、クライアント ログイン タスクが、続行する前にメッセージ プロセッサに呼吸スペースを与える (それ自体を待機する) 必要があることを意味します。というわけでシナリオはこれ
私の質問は、異なるパスを実行しているが、お互いに待機する必要があるこれら 2 つのスレッド間に既製のシンクロナイザーはありますか? 私の理解では、Cyclic Barrier、Semaphore、CountDownLatch は、同じ実行パスにあるスレッド間で同期します。
編集-単一のメッセージ処理スレッドがあります。ただし、複数のログイン スレッドが存在する場合があります。
私が考えている解決策は、再入可能ロックを使用することです。したがって、各メッセージを処理する前に、ロックが取得され、メッセージ プロセッサが進行中のクライアント ログインがあるかどうかがチェックされます。AtomicInteger は、進行中のログイン リクエストの数を教えてくれます。進行中のログイン要求が複数ある場合、通知プロセッサはロック状態で待機します。通知プロセッサが作業を再開するように通知される条件は、AtomicInteger カウントが 0 になる必要があることです。解決策に関する唯一の注意点は、メッセージが処理されており、ログイン要求がその途中で発生した場合です。ログイン スレッドは待機しません。ここで、メッセージ プロセッサがメッセージを処理したときに解放する必要がある、クライアント ログインの別のロックが必要になります。これにより、ソリューションが非常に複雑になり、この不必要な複雑さを避けたいと思います。任意の提案をいただければ幸いです。
java - Java で同期を使用する
次の違いは何ですか:
と
java - このコードはクリティカルセクションの相互排除に違反していませんか?
私は Java が初めてで、Java の並行性を理解しようとしています。調べているうちに、Java の並行性に関する非常に人気のあるページで次のコードに出くわしました。
ここでの関数 next() は、以下の行のように相互排除に違反していると思います。
同期ブロックの外に保持されるため、一部のスレッドが add() または next() で同期ブロック内のlinkedSitesを変更している場合、他のスレッドはそれを読み取ることができます.
間違っている場合は修正してください。