在Java中,可以使用關鍵字synchronized
來實現同步鎖。具體有以下幾種方式可以使用同步鎖:
synchronized
關鍵字修飾實例方法,該方法的同步鎖是當前實例對象。public synchronized void method(){
//需要同步的代碼
}
synchronized
關鍵字修飾靜態方法,該方法的同步鎖是當前類的Class對象。public static synchronized void method(){
//需要同步的代碼
}
synchronized
關鍵字修飾代碼塊,可以指定任意對象作為同步鎖。public void method(){
synchronized (obj) { // obj為任意對象
// 需要同步的代碼
}
}
需要注意的是,同步鎖只能保證同一時間只有一個線程執行同步代碼塊,其他線程將被阻塞,等待鎖釋放。同步鎖的加鎖和釋放鎖是自動進行的,不需要手動控制。
同時,還可以使用ReentrantLock
類來實現同步鎖,它提供了更多靈活的同步鎖控制方式,如可重入鎖、可中斷鎖、公平鎖等。使用ReentrantLock
需要手動進行加鎖和釋放鎖的操作。
import java.util.concurrent.locks.ReentrantLock;
private ReentrantLock lock = new ReentrantLock();
public void method(){
lock.lock(); // 加鎖
try {
// 需要同步的代碼
} finally {
lock.unlock(); // 釋放鎖
}
}