1. 程式人生 > >synchronized(this)和synchronized(object)的理解

synchronized(this)和synchronized(object)的理解

如果有一塊程式碼(或方法)可能被多個執行緒同時訪問,然後裡面操作的資料修改操作可能因為不同執行緒的操作而不一致的時候,使用synchronized鎖定這塊程式碼,確保同時只有一個執行緒訪問這個程式碼塊。也就是說,關鍵字synchronized可以用在任何類的方法裡面,即使該類沒有實現Runnable介面或者繼承Thread類。

使用this和object的區別:this是對當前類做控制, 即保證當前類是執行緒安全的, 而對於非執行緒安全的類在呼叫時, 為保證其執行緒安全性可以在呼叫時使用synchronized(object)確保被呼叫類的執行緒安全

理解this和object的區別, 可以藉助普通物件池和執行緒池程式碼來理解

使用this和object的方式稱為同步程式碼塊,對於類中不提供同步方法時可以採用同步程式碼塊

同步方法就是在方法前加關鍵字synchronized,然後被同步的方法一次只能有一個執行緒進入,其他執行緒等待

而同步程式碼塊則是在方法內部使用大括號使得一個程式碼塊得到同步。 同步塊會有 一個物件