同期がロックするべき理由についての質問に回答

Javaがすでに同期キーワード経由のアクセスを同期する理由、またロックを提供する必要がありますか?

同期の欠陥
以前のブログは、オブジェクトのロックを解除言及した2例があります。

コードブロックの同期ブロックを実行するプログラムがリリースされています。
プログラムのブロック同期が異常である、JVMが自動的にハンドル例外にロックを解除します。
あなたがスリープ()メソッドがブロックされて呼び出すことにより、ロック・スレッドI / Oまたはを取得するまで待機する必要があるが、それでもロックを保持している場合は、他のスレッドが、それは手順の効率に影響することができる唯一のドライ待機、ので。 
したがって、待機中のスレッドを防止するための仕組みの必要性は永遠例えば、ロックロックの時間や割り込みに応じて期間を待っているの価値を行うことができ、知られているのを待ちます。

別の例:競合が発生しない読み取り操作と書き込みファイルを、紛争と書き込み操作の現象を読み書きし、書き込み操作が現象を競合する可能性があり、発生しますが、読んで読んで、複数のスレッドがある場合。しかし、synchronizedキーワードを使用して同期を達成するために、それは問題を引き起こす:複数のスレッドが唯一のスレッドが読み取り動作を行っている際に読み込むことができませんので、他のスレッドだけ待つことができ、読まれている場合。 
したがって、我々は唯一のスレッド間の競合ではなく、読み込まれ、複数のスレッドを使用可能にするメカニズムを必要とする、それがロックすることにより行うことができます。 
また、ロック・スレッドは、ロックが存在しないことを知っているかもしれないが、同期することはできません。

まとめ差
結論、ロックと次のような違いと同期:

ロックは、インタフェース、およびsynchronizedキーワードです。
同期自動的にロックを解除し、ロックを手動でロックを解除する必要があります。
ロックは、割り込みに応答して、ロック・スレッド待ちをすることができますが、同期していない、スレッドは永遠に待機します。
ロックによってスレッドロックを取得していない、と同期させることができないがあると知ることができます。
ロックは、読み出し動作を複数のスレッドの効率を向上させることができます。
クラス、メソッド、およびコードブロックをロックすることができ、同期、およびブロックの範囲内のロック

の説明リンクします。https://blog.csdn.net/ji519974770/article/details/79736049

公開された740元の記事 ウォン称賛65 ビュー10万+

おすすめ

転載: blog.csdn.net/qq_41723615/article/details/104365089