1. 程式人生 > >多執行緒學習筆記十三——java中的原子操作類

多執行緒學習筆記十三——java中的原子操作類

 當程式更新一個變數時,如果多執行緒同時更新這個變數,可能得到期望之外的值,比如變

量i=1,A執行緒更新i+1,B執行緒也更新i+1,經過兩個執行緒操作之後可能i不等於3,而是等於2。因 為A和B執行緒在更新變數i的時候拿到的i都是1,這就是執行緒不安全的更新操作,通常我們會使 用synchronized來解決這個問題,synchronized會保證多執行緒不會同時更新變數i。 而Java從JDK 1.5開始提供了java.util.concurrent.atomic包(以下簡稱Atomic包),這個包中 的原子操作類提供了一種用法簡單、效能高效、執行緒安全地更新一個變數的方式。 使用原子的方式更新基本型別,Atomic包提供了以下3個類。 ·AtomicBoolean:原子更新布林型別。 ·AtomicInteger:原子更新整型。 ·AtomicLong:原子更新長整型。 通過原子的方式更新數組裡的某個元素,Atomic包提供了以下3個類。 ·AtomicIntegerArray:原子更新整型數組裡的元素。 ·AtomicLongArray:原子更新長整型數組裡的元素。 ·AtomicReferenceArray:原子更新引用型別數組裡的元素。