在Java中,可以使用synchronized
關鍵字來修飾對象的方法或代碼塊,以實現對象的同步。
public synchronized void method() {
// 同步的代碼
}
在上述示例中,使用synchronized
關鍵字修飾了一個方法。這將使得該方法在任意時刻只能被一個線程執行,其他線程需要等待當前線程執行完畢才能繼續執行。
public void someMethod() {
// 非同步的代碼
synchronized (lock) {
// 同步的代碼
}
// 非同步的代碼
}
在上述示例中,我們使用synchronized
關鍵字修飾了一個代碼塊,需要提供一個對象作為鎖。只有獲取到該鎖的線程才能執行同步的代碼塊,其他線程需要等待該鎖釋放才能繼續執行。
需要注意的是,synchronized
關鍵字修飾的對象鎖是基于對象的,如果對于同一個對象的不同實例,每個實例都是獨立的鎖,互不影響。如果需要對類的所有實例進行同步,可以使用static
修飾方法或代碼塊來實現。