首頁  >  文章  >  Java  >  Java平行程式設計中synchronized關鍵字的用法與原理

Java平行程式設計中synchronized關鍵字的用法與原理

WBOY
WBOY原創
2024-04-18 13:21:011157瀏覽

Java 中的 synchronized 關鍵字透過取得物件鎖定來實現同步,防止多執行緒同時存取共享資源引發資料競爭。其使用方式包括同步方法和同步程式碼區塊,其中 this 表示當前物件。

Java平行程式設計中synchronized關鍵字的用法與原理

Java 並行程式設計中的synchronized 關鍵字

原理

synchronized關鍵字用於同步對共享資源的訪問,防止多個執行緒同時存取同一個資源導致的資料競爭問題。它透過取得鎖定 (monitor) 來實現同步。當一個執行緒獲得鎖後,其他執行緒則需要等待,直到鎖被釋放才能繼續執行。

鎖定與物件相關聯,當一個執行緒對一個物件加鎖時,其他執行緒不能對該物件加鎖。

使用方式

synchronized 有兩種使用方式:

  1. 同步方法
  2. ##
    public synchronized void myMethod() {
        // 同步代码块
    }
  1. 同步程式碼區塊
  2. public void myMethod() {
        synchronized (this) {
            // 同步代码块
        }
    }
其中,

this 表示目前物件。

實戰案例

以下是一個執行緒不安全的計數器類別:

public class UnsafeCounter {
    private int count = 0;

    public void increment() {
        count++;
    }
}

如果多個執行緒同時呼叫

increment() 方法,可能會導致count 值不準確。為了解決這個問題,我們可以使用synchronizedincrement() 方法進行同步:

public class SafeCounter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }
}

現在,多個執行緒可以安全地呼叫

increment( ) 方法,因為該方法被synchronized 關鍵字保護。

以上是Java平行程式設計中synchronized關鍵字的用法與原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn