7

Java は、ドキュメントによると、同時実行パッケージで Lock オブジェクトを提供します。provides more extensive locking operations than can be obtained using synchronized methods and statements.

相互排除に加えて、同期されたメソッド/ブロックは、1 つのスレッドによって変数に加えられた変更が他のスレッドに確実に表示されるようにする先行発生関係を強制します。

Lock オブジェクトを使用すると、この関係が発生しますか? すべてのプラットフォームの同期ブロックの場合のように、監視は保証されますか?

4

2 に答える 2

2

Lock オブジェクトを使用すると、この関係が発生しますか? すべてのプラットフォームの同期ブロックの場合のように、監視は保証されますか?

はい、そうです。

先行発生関係を作成するアクションはいくつかありますが、そのうちの 1 つは同期 (ここ) であり、Java のロック オブジェクトもその目的のために用意されています。

Oracle ドキュメントからJava のメモリ整合性プロパティについて読んでください。以下を除いて、リンクで強調表示されます。

以下の「これらの保証を拡張する」は、「前に起こる」関係のようなメモリの一貫性プロパティを意味します。Lockクラスは のサブパッケージに属してjava.util.concurrentいるため、「前に起こる」関係などのメモリの一貫性プロパティが保証されます。

java.util.concurrent とそのサブパッケージのすべてのクラスのメソッドは、これらの保証をより高いレベルの同期に拡張します。

于 2015-09-30T10:29:53.887 に答える