日付: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();
}
}