在Java中,java.util.concurrent.atomic
包提供了一系列原子操作類,這些類可以確保在多線程環境下進行安全的計數操作。其中,AtomicInteger
和AtomicLong
是最常用的原子計數器類,它們分別提供了對整數和長整數的原子操作。
以下是如何使用AtomicInteger
作為計數器的示例:
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicCounter {
private final AtomicInteger counter = new AtomicInteger(0);
public void increment() {
counter.incrementAndGet();
}
public void decrement() {
counter.decrementAndGet();
}
public int getCount() {
return counter.get();
}
public static void main(String[] args) throws InterruptedException {
final AtomicCounter atomicCounter = new AtomicCounter();
// 創建10個線程,每個線程對計數器加1
Thread[] threads = new Thread[10];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(() -> {
for (int j = 0; j < 1000; j++) {
atomicCounter.increment();
}
});
threads[i].start();
}
// 等待所有線程完成
for (Thread thread : threads) {
thread.join();
}
System.out.println("Final count: " + atomicCounter.getCount());
}
}
在這個示例中,我們創建了一個AtomicCounter
類,它包含一個AtomicInteger
類型的計數器。我們提供了increment()
和decrement()
方法來增加和減少計數器的值,以及一個getCount()
方法來獲取當前計數器的值。
在main
方法中,我們創建了10個線程,每個線程對計數器加1,共加1000次。由于AtomicInteger
的操作是原子的,所以我們不需要擔心線程安全問題。最后,我們打印出計數器的最終值,它應該是10000(10個線程 * 1000次操作)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。