#大學#Java多執行緒學習02(執行緒同步)

weixin_33816946發表於2019-01-07

*所謂同步機制是指兩個執行緒同時操作一個物件,應該保持物件資料的統一性和整體性。

*Java語言中有兩種同步形式,即同步方法和同步程式碼塊。

1,同步方法

同步方法將訪問這個資源的方法都標記為synchronized,這樣在需要呼叫這個方法的執行緒執行完之前,其它呼叫該方法的執行緒都會被阻塞。

synchronized void sum(){…}

synchronized void max(){…}

*建立兩個執行緒的例子

import java.util.logging.Level;
import java.util.logging.Logger;

public class SyncThread extends Thread {
    private char cha;
    public SyncThread(char cha){
        this.cha=cha;
    }
    public void run(){
        PrintClass.printch(cha);
        System.out.println();
    }
    public static void main(String[] args){
        SyncThread t1=new SyncThread('A');
        SyncThread t2=new SyncThread('B');
        t1.start();
        t2.start();
    }
}
class PrintClass{
    public static void printch(char cha){
        for(int i=0;i<5;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(PrintClass.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.print(cha);
        }
    }
}

*同步塊

Java語言中同步的設定不只應用於同步方法,也可以設定程式的某個程式碼段為同步區域。

語法格式為:

synchronized(someobject){…程式碼…}

 

相關文章