同步方法與同步代碼塊

 

    synchronized用於解決同步問題,當有多條線程同時訪問共享數據時,如果不進行同步,就會發生錯誤,
java提供的解決方案是:只要將操作共享數據的語句在某一時段讓一個線程執行完,在執行過程中,其他線程不能進來執行可以。解決這個問題。
這裏在用synchronized時會有兩種方式,一種是上面的同步方法,即用synchronized來修飾方法,另一種是提供的同步代碼塊。
同步方法:用synchronized關鍵字修飾方法
public synchronized void method(){
    //方法體
}
同步代碼塊:在方法內部加鎖
public void method(){
    synchronized(obj){
        this.id=id;
    }
}
synchronize方法被調用時,直接會把當前對象鎖了,在方法執行完之前其他線程無法調用當前對象的其他方法。所以,同步方法相比較於同步代碼塊作用範圍大,則性能低一些,synchronize的方法儘量減小,並且應儘量使用方法同步代替代碼塊同步。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章