AtomicBoolean介紹與使用

簡介

  AtomicBooleanjava.util.concurrent.atomic包下的原子變量,這個包裏面提供了一組原子類。其基本的特性就是在多線程環境下,當有多個線程同時執行這些類的實例包含的方法時,具備排他性,即當某個線程進入方法,執行其中的指令時,不會被其餘線程打斷,而別的線程就像自旋鎖同樣,一直等到該方法執行完成,才由JVM從等待隊列中選擇一個另外一個線程進入,這只是一種邏輯上的理解。其實是藉助硬件的相關指令來實現的,不會阻塞線程(或者說只是在硬件級別上阻塞了)java

      例如AtomicBoolean,在這個Boolean值的變化的時候不容許在之間插入,保持操做的原子性。多線程

方法和舉例

compareAndSet(boolean expect, boolean update)。這個方法主要兩個做用。     atom

1. 比較AtomicBoolean和expect的值,若是一致,執行方法內的語句。其實就是一個if語句。         spa

2. 把AtomicBoolean的值設成update,比較最要的是這兩件事是一鼓作氣的,這連個動做之間不會被打斷,任何內部或者外部的語句都不可能在兩個動做之間運行。爲多線程的控制提供瞭解決的方案。線程

相關文章
相關標籤/搜索