原子操作类
原子性這個概念,在多線程編程里是一個老生常談的問題。所謂的原子性表示一個或者多個操作,要么全部執行完,要么一個也不執行。不能出現成功一部分失敗一部分的情況。?
在多線程中,如果多個線程同時更新一個共享變量,可能會得到一個意料之外的值。比如i=1?。A線程更新i+1?、B線程也更新i+1。
通過兩個線程并行操作之后可能i的值不等于3。而可能等于2。因為A和B在更新變量i的時候拿到的i可能都是1?
這就是一個典型的原子性問題
前面幾節課我們講過,多線程里面,要實現原子性,有幾種方法,其中一種就是加Synchronized同步鎖。
而從JDK1.5開始,在J.U.C包中提供了Atomic包,提供了對于常用數據結構的原子操作。它提供了簡單、高效、以及線程安全的更新一個變量的方式
?
總結
- 上一篇: ArrayBlockingQueue原理
- 下一篇: J .U.C 中的原子操作类