実行のスレッドのいくつかの特性(共有、相互に排他的な、原子、可視性、順序付け)

まず、共有

複数のスレッドが同じメモリを共有し、それはスレッド安全性の問題を引き起こす可能性があります。

このとき同時に、スレッド1とスレッド2のアクセスとして、起こり得る変数Aスレッド1スレッド2の読みが同じ値ではなく、ほとんどの場合、スレッド1スレッド2は、変数Aを読み取るための正確に同じ時間ではない可変例えば、変数Aの差これは、変更されている可能性があります。

第二に、相互に排他的

同じリソースについては、同時に一つのスレッドだけのアクセスを懸念しています。複数のスレッドの矛盾を解決するためのリソースは読み取りおよび書き込みが、注意を払うに問題の報道に。

第三に、アトミック

完全なプロセスのリソースの動作。これは、動作の停止の実行に何かを行うことはありません。いわゆる原子JVMは実際の実装ではなく、コード・レベルを指します。

例えば:私はアトミック操作をしませ++します。

例如:クラスにClassA =新にClassA()。

使用して、アトミックと相互排他を確保同期。

第四に、可視性

共有変数に、複数のスレッドが同じ共有変数を読んでいるときに、変数値が行わ変数の異なるスレッドにつながる別個のメモリコピー、メインメモリとの将来の同期中不明時に書き込まれ変形、及び互いに見えません。

volatileキーワード見える共有変数を達成することができます。

第五に、秩序

かどうかは、実行に沿って書かれたコードに応じたプログラムとして理解されます。

スレッドと二つの角度の間に複数のスレッドの中から発注を検討してください。

プログラムのスレッドがコードを書かれた順序に従って実行されるように表示されたら、実際には、異なるJVMプログラムは、特定の命令が並べ替えを介して実行され、最適化の異なるレベルを持つことになります。

 

ときに、スレッド、いつでも任意のコードが実行クロスに可能性があります。プログラムは、揮発性の使用を制御する場合を除き、同期またはロック。

同期、相互排除、またはの使用は純粋に偶然ですので、一般的には、プログラムのシリアル実行がなければなりません。

 

 

おすすめ

転載: www.cnblogs.com/perfumeBear/p/11803504.html