執行緒同步程式碼塊和同步方法的使用
阿新 • • 發佈:2021-11-21
方法一:執行緒同步程式碼塊
作用
解決執行緒共享同操作的資料的安全性。(執行緒安全)
語法
synchronized(同步監視器){
// 需要被同步的程式碼
}
說明
1.操作共享資料的程式碼,即為需要被同步的程式碼。—>不能包含程式碼多了,也不能包含程式碼少了。
2.共享資料:多個執行緒共同操作的變數。比如:車站賣的票的數量就是共享資料。
3.同步監視器,俗稱:鎖,任何一個類的物件,都可以充當鎖。
補充
--要求:多個執行緒必須要共用同一把鎖。
--在實現Runnable介面建立多執行緒的方式中,我們可以考慮使用this充當同步監視器。
方法二:執行緒同步方法
如果操作共享資料的程式碼完整的宣告在一個方法中,我們不妨將此方法宣告同步的。
@Override
public void run(){
show();
}
private synchronized void show(){ //同步監視器:this
// 需要被同步的程式碼
}
private static synchronized void show(){ //同步監視器:windows.class
// 需要被同步的程式碼
}
總結:
1.同步方法仍然涉及到同步監視器,知識不需要我們顯示宣告。
2.非靜態的同步方法,同步監視器是:this ;靜態的同步方法,同步監視器是:當前類本身。