[解決済み】Synchronized Blockの代わりにSynchronized Methodを使用する利点はありますか?
2022-04-17 16:01:06
質問
synchronized blockに対するsynchronized methodの利点を、例を挙げて教えてください。
どのように解決するのですか?
<ブロッククオートsynchronized blockに対するsynchronized methodの優位性を、例を挙げて教えてください。ありがとうございます。
ブロックよりもシンクロナイズドメソッドを使用する明確な利点はありません。
おそらく唯一の利点は(私はそれを利点とは呼ばないが)、オブジェクトの参照を含める必要がないことだろう。
this
.
メソッドです。
public synchronized void method() { // blocks "this" from here....
...
...
...
} // to here
ブロック
public void method() {
synchronized( this ) { // blocks "this" from here ....
....
....
....
} // to here...
}
ほらね。全く利点がない。
ブロック する メソッドを同期させるとオブジェクト全体がロックされるのに対して、別のオブジェクトをロックとして使用できるため、柔軟性があります。
比較してみてください。
// locks the whole object
...
private synchronized void someInputRelatedWork() {
...
}
private synchronized void someOutputRelatedWork() {
...
}
vs.
// Using specific locks
Object inputLock = new Object();
Object outputLock = new Object();
private void someInputRelatedWork() {
synchronized(inputLock) {
...
}
}
private void someOutputRelatedWork() {
synchronized(outputLock) {
...
}
}
また、メソッドが大きくなっても、シンクロナイズドセクションを分離しておくことができます。
private void method() {
... code here
... code here
... code here
synchronized( lock ) {
... very few lines of code here
}
... code here
... code here
... code here
... code here
}
関連
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaでネストされたループから抜け出すには?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] .lengthが解決できない、またはフィールドでない