2

内部で同期ブロックを指定し、1 つのオブジェクトのみを使用してロックするいくつかのメソッド (5 または 6) を呼び出す 2 つの実行中のスレッドがあります。同期点が 1 つしかない場合、デッドロックの可能性はありますか? これまでのところ、そのような状況は見たことがありませんが、それでも. 手伝ってくれてありがとう。

4

4 に答える 4

5

デッドロックとは、2 つ以上のスレッドが永久にブロックされ、互いに待機している状況を表します。

メソッドが互いに呼び出される場合、状況が発生する可能性があります。ドキュメントの例で詳細を確認してください。

于 2013-05-14T15:16:45.143 に答える
4

呼び出しのみを使用しているsynchronized(つまり、join、wait、notify などを使用していない) 場合、「デッドロック」(ここではこの用語を広く使用) できる唯一の方法は、スレッドの 1 つが同期ブロックを終了できなかった場合です (たとえば、無限ループ、リソースを要求する呼び出しから戻らないなど)。はい、可能です。

于 2013-05-14T23:12:03.187 に答える
2

共有リソースをロックするためのロックが 1 つしかない場合、デッドロックは発生しません。コフマン条件が満たされているかどうかを確認して、潜在的なデッドロックを特定できます。

于 2013-05-14T15:39:33.453 に答える