同步方法是指在方法聲明時使用`synchronized`關鍵字修飾的方法。當一個執行緒進入一個同步方法時,它會自動獲得該方法所屬對象的內置鎖,直到該方法執行完畢。這意味著在同一時刻,只有一個執行緒可以執行該同步方法,其他嘗試訪問該方法的執行緒將被阻塞,直到當前執行緒釋放鎖。
同步方法的示例代碼:
```java
public synchronized void synchronizedMethod() {
// 可能會產生執行緒安全問題的代碼
}
```
注意事項:
同步方法會阻止多個執行緒同時訪問該方法,這可能導致性能下降,因為執行緒需要在等待鎖釋放時阻塞。
同步方法適用於保護整個方法的資源,但如果方法中包含大量不涉及共享資源的代碼,則可能導致不必要的同步開銷。
`synchronized`關鍵字也可以修飾靜態方法,此時鎖住的是整個類,而不是特定對象實例。
示例:使用`synchronized`關鍵字修飾的靜態方法:
```java
public static synchronized void synchronizedStaticMethod() {
// 可能會產生執行緒安全問題的代碼
}
```
總結:同步方法是一種簡單且有效的執行緒同步機制,適用於保護方法級別的資源訪問。然而,它也可能帶來性能問題,因此在實際套用中應根據需要仔細考慮是否使用同步方法,以及如何最佳化同步以提高性能。