別再羨慕c++ 11了,java馬上也有原子方法訪問變量了

jopen 10年前發布 | 13K 次閱讀 Java開發 Java

在并行運算和多線程環境里,原子操作一個非常重要的功能. 比方說你要完成一個線程安全的增量數組,現在在Java里并不具備一個方法可以保證獲取數組的某項,然后加1,再放回去的原子操作。這樣的的功能在c++ 11里通過std::mutexstd::recursive_mutex可以實現這個功能(http://en.wikipedia.org/wiki/C%2B%2B11#Threading_facilities)

現在Java也即將要增加變量和數組的原子操作了,Doung Lea和Paul Sandoz即將給我們帶來jep 193,增強型Volatiles (http://openjdk.java.net/jeps/193)


在這里我們即將引入VarHandle類,這個類就非常像jdk7引入的MethodHandle,使用方法是通過Lookup獲得對一個對象的VarHandle,之后可以使用原子操作方法對該對象進行操作。和MethodHandle一樣,這個類在library里屬于比較底層的類。它使用invokedynamic去鏈接去訪問的對象,通過虛擬機實現原子操作。

除此之外,java還有可能語法上支持直接生成訪問某個對象的VarHandle。

static final VarHandle VH_FOO_FIELD_I = Foo::i;
來自:http://blog.csdn.net/eagleyan/article/details/41745083

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!