다른 스레드를 시작하여 클래스를 모두 실행하려고하면 동기화 된 메서드가 세 개 있습니다. 동기화 된 출력을 볼 수 없으며 개체에 대한 잠금이 없습니다. & 출력에서 모두 볼 수 있습니다. 스레드가 동시에 실행됩니다. 아래는 제 코드입니다. 입력은 감사하겠습니다. 감사합니다멀티 스레드에서 동기화
공용 클래스 DisplayMessage {
public static synchronized void sayHello(String name) throws InterruptedException{
for(int i=1; i<=10;i++){
Thread.sleep(1000);
System.out.println("How are you"+name);
}
}
public synchronized void sayHello1(String name2,int j){
for(int i=1; i<=10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("How are you Hello1 :: "+name2+ " Age " + j);
}
}
public synchronized void sayHello2(String name3,String lastname){
for(int i=1; i<=10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("How are you Hello 2 :: "+ name3 + " lastname " +lastname);
}
}
} Thread 클래스 : 공용 클래스 MyThread2이 확장 스레드 {:
공용 클래스 MyThread는 스레드 {
String name;
MyThread(String name) {
this.name = name;
}
public void run() {
try {
DisplayMessage.sayHello(name);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} Thread2 클래스 확장
String name2;
String name3;
int age;
DisplayMessage dm;
MyThread2(DisplayMessage dm, String name2, int age) {
this.dm = dm;
this.name2 = name2;
this.age = age;
}
public void run() {
dm.sayHello1(name2, age);
}
} Thread3 클래스 :
패키지 동기화.계급;
MyThread3 주요 방법은 다른 스레드에게 공용 클래스 SynchronizationDemo {public static void main(String[] args) {
DisplayMessage dm=new DisplayMessage();
MyThread t1= new MyThread("steve");
MyThread t2=new MyThread("Anitha");
MyThread2 t3=new MyThread2(dm," Amit", 31);
MyThread3 t4=new MyThread3(dm," Arit ","urkude");
t1.start();
t2.start();
t3.start();
t4.start();
}
} 아래
산란 사용한 나사 {
String name3;
String lastname;
int age;
DisplayMessage dm2;
MyThread3(DisplayMessage dm, String name3, String lastname) {
this.dm2 = dm;
this.name3 = name3;
this.lastname = lastname;
}
public void run() {
dm2.sayHello2(name3, lastname);
}
}
Democlass 연장
공용 클래스 출력은 :
yousteve 얼마나 당신에게 얼마나 Hello1 :: 나이 31 어떻게에게 있습니다 Hello1 :: 미트 나이는 31 는 yousteve 얼마나 yousteve 얼마나 당신에게 얼마나 Hello1 :: 나이 31 어떻게 yousteve 미트 미트 있습니다 어떻게 당신에게 Hello1 :: 미트 나이 31 yousteve 얼마나 당신에게 얼마나 Hello1 :: 미트 나이 31 yousteve 얼마나 당신에게 얼마나 Hello1 :: 미트 나이 31 yousteve 얼마나 당신에게 얼마나 Hello1 :: 미트 시대입니다 31 안녕하세요? :: Amit Age 31 어떻게 지내세요? yousteve 얼마나 어떻게 Hello1 :: 미트 나이가 31 이 yousteve 얼마나 당신에게 얼마나 Hello1 :: 어떻게 안녕하세요입니다 미트 youAnitha 얼마나 나이 31 2 : Arit LASTNAME urkude 어떻게 얼마나 youAnitha 당신에게 있습니다 여러분 안녕하세요 2 : Arit LASTNAME urkude youAni 얼마나 안녕하세요을 얼마나 2 : Arit LASTNAME urkude youAni 얼마나 2 : Arit LASTNAME urkude 안녕하세요을하는 방법 2 : Arit LASTNAME urkude 안녕하세요을 얼마나 How are youAni 안녕하세요안녕하세요 2 :: Arit 성 urkude 어떻게 youAni 있습니다 안녕하세요을 얼마나 2 : Arit LASTNAME urkude 안녕하세요을 얼마나 2 : Arit LASTNAME youAni 얼마나 urkude youAni 얼마나 안녕하세요을 얼마나 2 : Arit LASTNAME 방법이다 youAni 얼마나 urkude you Hello 2 :: Arit 성 urkude
정적 메서드뿐만 아니라 2 개의 인스턴스 메서드를 synchornizing하는 것은 원하는 것입니까?. 왜 하나의 방법을 사용하여 동기화 된 작업을 볼 수 없는지 – TheLostMind