在Java中,處理并發(fā)沖突的一種常見方法是使用synchronized
關(guān)鍵字或者java.util.concurrent.atomic
包中的原子類。這些方法可以確保在同一時(shí)間只有一個(gè)線程能夠訪問共享資源,從而避免并發(fā)沖突。
以下是使用synchronized
關(guān)鍵字處理并發(fā)沖突的一個(gè)示例:
public class Counter {
private int count;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
在這個(gè)例子中,我們使用synchronized
關(guān)鍵字修飾increment()
和getCount()
方法。這樣,當(dāng)多個(gè)線程同時(shí)嘗試訪問這些方法時(shí),只有一個(gè)線程能夠獲得對(duì)象的鎖并執(zhí)行方法。其他線程需要等待鎖被釋放才能繼續(xù)嘗試獲取鎖。
另一種處理并發(fā)沖突的方法是使用java.util.concurrent.atomic
包中的原子類,如AtomicInteger
:
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public void increment() {
count.incrementAndGet();
}
public int getCount() {
return count.get();
}
}
在這個(gè)例子中,我們使用AtomicInteger
類來(lái)替代普通的整數(shù)變量。AtomicInteger
提供了原子操作方法,如incrementAndGet()
和get()
,這些方法在內(nèi)部處理了并發(fā)沖突,因此我們不需要使用synchronized
關(guān)鍵字。