JAVA是一門廣泛使用的編程語言,使用范圍包括各種開發領域。當我們使用JAVA進行編程時,我們應該了解一些概念,例如JAVA中的原子性和可見性。
原子性是指一個操作是一個不可分割的整體。如果一個操作要求原子性,那么它要么全部被執行,要么全部不被執行。JAVA中提供了一種特殊類型的變量,叫做“原子變量”。這些變量保證了對它們的操作是原子性的。例如,當兩個線程使用相同的原子變量進行加操作時,JAVA保證這兩個加操作是互斥的。
AtomicInteger atomicInteger = new AtomicInteger(0); atomicInteger.getAndIncrement();
可見性是指一個線程對共享變量的修改,能夠被其他線程及時的感知到。在JAVA語言中,通過使用synchronized關鍵字和volatile變量來保證可見性。其中,synchronized使得變量被修改后,會立刻同步到主存中去;而volatile變量對所有線程是可見的,它保證了每一個線程中的變量副本與主存中的值保持一致。
public class Main { public volatile int sharedVar; public void update(){ sharedVar = 1; } public static void main(String[] args) { Main main = new Main(); Thread t1 = new Thread(new Runnable() { @Override public void run() { while (main.sharedVar == 0) { //do something } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { main.update(); } }); t1.start(); t2.start(); } }
以上是對JAVA原子性和可見性的簡要介紹。在編寫JAVA程序時,我們應該注意這兩個概念的應用,以避免出現不必要的錯誤。