[解決済み】同期とロック
2022-04-18 20:14:58
質問
java.util.concurrent
API では
Lock
これは基本的に、クリティカルなリソースにアクセスするためにコントロールをシリアライズするものです。これは、以下のようなメソッドを提供します。
park()
と
unpark()
.
を使えば、似たようなことができる。
synchronized
キーワードを使用し
wait()
と
notify() notifyAll()
メソッドを使用します。
実際のところ、どちらが良いのか、またその理由は何でしょうか?
どのように解決するのですか?
単にオブジェクトをロックするだけなら、私は
synchronized
例
Lock.acquire();
doSomethingNifty(); // Throws a NPE!
Lock.release(); // Oh noes, we never release the lock!
を明示的に行う必要があります。
try{} finally{}
をすべて使用します。
一方、シンクロの場合は、超明確で間違えようがない。
synchronized(myObject) {
doSomethingNifty();
}
それはそうと。
Lock
の方が、取得と解放がきれいにできないような複雑なものには便利かもしれません。 正直なところ、素の
Lock
のような、より洗練された並行性制御を行うようにしましょう。
CyclicBarrier
または
LinkedBlockingQueue
を使用することができます。
を使う理由がないんです。
wait()
または
notify()
が、いいものがあるかもしれません。
関連
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Javaクラスローダーにソースコードから潜り込む
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
プロジェクトの依存関係を解決できなかった 解決
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
javaでよく使われる英単語
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] 揮発性 vs. 連動性 vs. ロック性
-
[解決済み] lockステートメントは、ボンネットの中で何をするのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
をインスタンス化することができません。
-
JQuery DataTable 详解
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
java 例外。Javaツールの初期化
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策
-
[解決済み] Javaでsynchronized(this)を避けるには?
-
[解決済み】Synchronized Blockの代わりにSynchronized Methodを使用する利点はありますか?