Java中有一個叫做AtomicInteger
的類,是線程安全的整數類。它可以用來保證線程安全性,而不需要加鎖。這個類中定義了一些原子操作,例如加、減、比較等等。下面我們來了解這個類的使用。
// 創建一個初始值為0的原子整數 AtomicInteger atomicInteger = new AtomicInteger(); // 返回當前值,并將值增加1 int value1 = atomicInteger.getAndIncrement(); System.out.println("value1=" + value1); // 輸出: value1=0 // 將值減1,并返回修改后的值 int value2 = atomicInteger.decrementAndGet(); System.out.println("value2=" + value2); // 輸出: value2=-1 // 比較并交換操作 int expect = 0; // 當前期望值為0 int update = 1; // 新的更新值為1 boolean result = atomicInteger.compareAndSet(expect, update); // 如果當前值等于期望值0,則修改為1 System.out.println("result=" + result); // 輸出: true int value3 = atomicInteger.get(); System.out.println("value3=" + value3); // 輸出: value3=1
這里我們展示了getAndIncrement()
、decrementAndGet()
和compareAndSet()
這三種操作的使用。
需要注意的是,雖然AtomicInteger
是線程安全的,但并不能保證代碼中所有的操作都是原子操作。如果需要保證多個原子操作成為一個原子操作,可能需要使用鎖來進行同步。另外,AtomicInteger
的性能比使用鎖的方式要好。