並行プログラミング|同期関連のインタビューの質問

並行プログラミング

 

序文

インタビュープロセスにおける並行プログラミングは確かに求められますが、これは、知識退屈する前に自分自身を準備していませんでした

その他の並行プログラミングの知識の深さの調査では、我々は、このサブセクションの下でそれについて一緒に入れてきた同期の知識ポイント

同期化に関連する問題


1.Synchronizedはそれを使用し、原理は何ですか?

そこには何も書かれているので、これは、尋ねることはほぼ百パーセントのJava面接の質問ではありませんし、

プログラムは、開発者が聞いていない、または全く接触が同期しない送信されます。
同期は、相互に排他的な実装するためのJVMによって同期を達成するための一つの方法である、場合
、バイトコードは、あなたのビューが変更され同期ブロックをコンパイルされ、あなたはわかります、され
、コンパイルがコンパイルされる前と後に、修正プログラムブロックを同期生成
monitorenterとmonitorexit 2バイトコード命令を。
これらの2つの命令は、それが何を意味するのでしょうか?
:Monitorenter命令は、仮想マシンに実行され、我々は最初のロックオブジェクトを取得しようとしなければならないです
ロック、オブジェクトがロックされていない場合、または現在のスレッドがすでにこのオブジェクトのロックを所有している
1カウンタとするとき、命令実行monitorexitロックカウンタ- 1;カウンタが0である場合
、ロックが解除されます。
あなたは、オブジェクトが失敗した場合は、その後、現在のスレッドは、別のことでオブジェクトロックするまでブロックします
解放スレッド。
同期Javaは、オブジェクトのヘッダ内のフラグを設定することにより、取得してリリースにロックする
目的を。

 


2.あなたはロック獲得目標を述べ、最後にこの「ロック」とは何ですか?オブジェクトのロックを確認する方法?

本質「ロック」は、実際にバイトコードmonitorenterとmonitorexit命令である
、すなわち、ロック及びアンロックするために、パラメータの参照タイプ

おすすめ

転載: blog.csdn.net/zzhuan_1/article/details/104001900