Volatileの使用シーンおよび使用モードの説明

1047 ワード

Volatileは一般的なマルチスレッドプログラミングでは気まずいキーワードで、javaでは「程度が軽い」と呼ばれています.  synchronized"ですが、一般的にはいくつかのマルチスレッドの文章の中でVolatileにほとんど言及しないか、このキーワードを使用することをお勧めしません.結局、このキーワードは非常にコントロールしにくいので、いっそ使わないほうがいいと思います.しかし、私はこのキーワードに高性能の読み書きロックを実現することに興味を持っています.
まずVolatileの特性をまとめます:可視性、しかし反発しません.どのようにこの言叶を理解して、まず可視性の原因は、このキーワードは変数をレジスタの中にキャッシュしないことができて、毎回値を取ってすべて直接メインメモリの中から取得して、だから毎回最新の値です.しかし反発しないのはロックがないためで、ここで値を変える流れ(読み取り-修正-書き込み)があって、これは、読み込みよりも時間がかかる操作であり、ロックがかかっていない場合、他のスレッドがこの値を読み取るのは任意の時刻の値である可能性があります.したがって、この特性から、Volatileを用いることで、書き込みが少なく、読み取りが非常に良好であることが推測できる、もちろん、まず、マルチスレッド同時書き込みではないことを保証する必要がある.
Volatileには5つの使用シーンがある(Brian Goetz([email protected])の記事):
1.ステータスフラグとして
2.使い捨て安全配布
3.独立観察
4.volatile beanモード
5.コストの低いリード・ライト・ロック・ポリシー
具体的な内容は原文を拝読することができます.住所:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
その中の5つ目はやはり普及して応用する価値があって、その他のいくつかのモードは使用して私個人はやはり慎重に保つ必要があると思って、結局自分のコードは変数が反発しないことを保証することができて、いったんチームが協力するならば保証しにくくて、あなたがチームの内の一人にこれがvolatileだと言うことができないためです.
基本ですが、忘れないようにメモしておきます.