待機する最善の選択肢は何ですか...低レベルの同期を通知しますか?

ripper234:

私の知る限りでは、wait()notify()より良い並行処理メカニズムに置き換えられました。それで、同期キューを実装するために、どのようなより良い代替案を選択しますか?

彼らはどのような意味で「より良い」のでしょうか?

編集:これ(「同期キューの実装」)はインタビューの質問です。受け入れ可能な回答では、BlockingQueueまたはその他のキュー実装を使用できません。ただし、CountDownLatchなどの他の同期コンストラクトを使用する場合があります。許可されているクラスと禁止されているクラスの完全なリストはありません。頭を使ってください。

Jed Wesley-Smith:

synchronized/wait()/notify()/notifyAll()Lockクラスのメソッドlock()/unlock()/newCondition()とConditionで直接置き換えられましたawait()/signal()/signalAll()

これらにはいくつかの利点があります。まず、公平性ポリシーなどの追加のセマンティクス、および分散ロックなどの機能を許可します。複数のConditionオブジェクトのサポートにより、はるかにきめ細かいシグナリングと、割り込みなしの待機およびある時間までの待機などが可能になります。

たとえば、リンクされたコードには、シグナリングに使用しようとする個別のオブジェクトがあります(関連するモニターが待機中に保持されないために失敗します)。これは、複数の条件を持つ単一のロックを使用することで直接置き換えることができます。

改善という点では、追加機能は価値があるかもしれません。Java5では、明示的なLock実装は実際にはJVMモニターよりも優れていますが、基本的には、JVMのDoug Leaのコードにニックを入れ、パフォーマンスはほぼ同等です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SConsの選択肢は何ですか?

分類Dev

djangoモデルで整数の選択肢を指定する意味は何ですか?

分類Dev

djangoモデルで整数の選択肢を指定する意味は何ですか?

分類Dev

Djangoモデルの選択肢としてすべてのタイムゾーンを使用するための最良の方法は何ですか?

分類Dev

メンバー変数の初期化は延期する必要があります。このクラスに最適な設計の選択肢は何ですか?

分類Dev

Pythonで関数を列挙するためのいくつかの選択肢は何ですか?

分類Dev

HaskellのIdrisのFinに代わる好ましい選択肢は何ですか

分類Dev

backbone.jsを学ぶための最良の方法は何ですか?他の選択肢はありますか?

分類Dev

ピボットは私の最良の選択肢ですか?方法

分類Dev

XSDの選択肢を空にすることはできますか?

分類Dev

機能を待つ最良の方法は何ですか?

分類Dev

AutoIncreamentの最善のアプローチは何ですか

分類Dev

scrollWidth問題の最善の解決策は何ですか?

分類Dev

lazy = "dynamic"の何が問題になっていますか?選択肢は何ですか?

分類Dev

AWS AppSyncDDoS保護。選択肢は何ですか?

分類Dev

中間テーブルを回避するための最善の方法は何でしょうか

分類Dev

Javaでランタイムコンソールの警告を抑制する最善の方法は何ですか?

分類Dev

セレクトヘルパーのオプションと選択肢の違いは何ですか?

分類Dev

Sonata Adminのフィルターに選択肢付きの選択を追加する最良の方法はどのようになっていますか?

分類Dev

ダイナミックキャスティングをやめたいです。最良の選択肢は何ですか?

分類Dev

viが唯一の選択肢である場合はありますか?

分類Dev

viが唯一の選択肢である場合はありますか?

分類Dev

非同期を操作し、ノードjsのデータベースから選択して待機する方法

分類Dev

Rを使用して選択肢セットの選択肢の値を変更するにはどうすればよいですか?

分類Dev

setStringはHibernateで減価償却されます。他の選択肢は何ですか?

分類Dev

@ Async、Future、AsyncResult; 非同期関数の完了を「待機」する方法は何ですか

分類Dev

cp-uはMacでは違法です。選択肢は何ですか?

分類Dev

1行のテーブルから2行を選択するための最良の方法は何ですか?

分類Dev

Luceneでブール値のインデックスを作成するのに最適な選択肢はどれですか。

Related 関連記事

  1. 1

    SConsの選択肢は何ですか?

  2. 2

    djangoモデルで整数の選択肢を指定する意味は何ですか?

  3. 3

    djangoモデルで整数の選択肢を指定する意味は何ですか?

  4. 4

    Djangoモデルの選択肢としてすべてのタイムゾーンを使用するための最良の方法は何ですか?

  5. 5

    メンバー変数の初期化は延期する必要があります。このクラスに最適な設計の選択肢は何ですか?

  6. 6

    Pythonで関数を列挙するためのいくつかの選択肢は何ですか?

  7. 7

    HaskellのIdrisのFinに代わる好ましい選択肢は何ですか

  8. 8

    backbone.jsを学ぶための最良の方法は何ですか?他の選択肢はありますか?

  9. 9

    ピボットは私の最良の選択肢ですか?方法

  10. 10

    XSDの選択肢を空にすることはできますか?

  11. 11

    機能を待つ最良の方法は何ですか?

  12. 12

    AutoIncreamentの最善のアプローチは何ですか

  13. 13

    scrollWidth問題の最善の解決策は何ですか?

  14. 14

    lazy = "dynamic"の何が問題になっていますか?選択肢は何ですか?

  15. 15

    AWS AppSyncDDoS保護。選択肢は何ですか?

  16. 16

    中間テーブルを回避するための最善の方法は何でしょうか

  17. 17

    Javaでランタイムコンソールの警告を抑制する最善の方法は何ですか?

  18. 18

    セレクトヘルパーのオプションと選択肢の違いは何ですか?

  19. 19

    Sonata Adminのフィルターに選択肢付きの選択を追加する最良の方法はどのようになっていますか?

  20. 20

    ダイナミックキャスティングをやめたいです。最良の選択肢は何ですか?

  21. 21

    viが唯一の選択肢である場合はありますか?

  22. 22

    viが唯一の選択肢である場合はありますか?

  23. 23

    非同期を操作し、ノードjsのデータベースから選択して待機する方法

  24. 24

    Rを使用して選択肢セットの選択肢の値を変更するにはどうすればよいですか?

  25. 25

    setStringはHibernateで減価償却されます。他の選択肢は何ですか?

  26. 26

    @ Async、Future、AsyncResult; 非同期関数の完了を「待機」する方法は何ですか

  27. 27

    cp-uはMacでは違法です。選択肢は何ですか?

  28. 28

    1行のテーブルから2行を選択するための最良の方法は何ですか?

  29. 29

    Luceneでブール値のインデックスを作成するのに最適な選択肢はどれですか。

ホットタグ

アーカイブ