2つの方法でJava同期プロセス

日付:2020年1月15日

機能:同期方法の過程で2つのJavaを理解し

IDE:のIntelliJ IDEA

第一の方法
クラスので、プロセスが既に使用されている場合の方法は、マルチプロセスと呼ばれたときことを、追加synchronizedキーワードにアクセスする必要があり、他のプロセスにメソッド宣言(共有リソース)前:synchronizedキーワードを使用して待機する必要があります

package testDemo;

class OutTest{
    public static synchronized void print(char c){
        for(int i=0;i<4;i++){
            System.out.println(c);
            try {
                Thread.sleep(1000);
            }catch (InterruptedException e){
                System.out.println(e.getClass());;
            }
        }
    }
}


public class ThreadTest extends Thread{
    private char ch;
    public ThreadTest(char ch){
        this.ch = ch;
    }
    public void run(){
        OutTest.print(ch);
    }
    public static void main(String[] args){
        ThreadTest threadTest = new ThreadTest('A');
        ThreadTest threadTest1 = new ThreadTest('B');
        threadTest.start();
        threadTest1.start();
    }
}

第2のアプローチは、
ときに我々は、メソッドの一部を得ることができないときなどOutTets.print()メソッド、今回私たちは、「同期ブロックを使用することができますので、我々は、文の前にsynchronizedキーワードを追加することはできません上記のようにソースコードを、 。 " 形式は次のとおりです。同期(オブジェクト){...} 、オブジェクトは、我々は、オブジェクトを訪問したアクセスリソースに必要なものである、を制御する必要があります誰

package testDemo;

class OutTest{
    public void print(char c){
        for(int i=0;i<4;i++){
            System.out.println(c);
            try {
                Thread.sleep(1000);
            }catch (InterruptedException e){
                System.out.println(e.getClass());;
            }
        }
    }
}


public class ThreadTest extends Thread{
    private char ch;
    public ThreadTest(char ch){
        this.ch = ch;
    }
    public void run(){
        OutTest outTest = new OutTest();
        synchronized (outTest){
            outTest.print(ch);
        }
    }
    public static void main(String[] args){
        ThreadTest threadTest = new ThreadTest('A');
        ThreadTest threadTest1 = new ThreadTest('B');
        threadTest.start();
        threadTest1.start();
    }
}

公開された76元の記事 ウォンの賞賛2 ビュー2125

おすすめ

転載: blog.csdn.net/weixin_43476969/article/details/103991634