Ich habe drei synchronisierte Methoden in einer Klasse, wenn ich versuche, alle von ihnen zu starten, indem Sie verschiedene Threads starten, ich bin nicht in der Lage, die synchronisierte Ausgabe zu sehen, keine Sperre wird auf Objekt & ich konnte in der Ausgabe alle Threads werden gleichzeitig ausgeführt. Unten ist mein Code. Eingaben werden geschätzt. DankSynchronisiert in Multithreading
public class 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-Klasse:
public class MyThread erstreckt Thema {
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 Klasse: public class MyThread2 erstreckt Thema {
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 Klasse:
Paket Synchronisation.Klassensperre;
public class MyThread3 Gewinde erstreckt {
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 mit Hauptmethode verschiedene Threads public class SynchronizationDemo Laichen {
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();
}
}
unten sind die Ausgänge :
Wie yousteve sind Wie geht's dir hello1 :: Amit Alter 31 Wie geht's dir hello1 :: Amit Alter 31 Wie yousteve sind Wie yousteve sind Wie geht's dir hello1 :: Amit Alter 31 Wie sind yousteve Wie gehe es dir hello1 :: Amit Alter 31 Wie yousteve ist Wie gehe es dir hello1 :: Amit Alter 31 Wie yousteve ist Wie geht es dir hello1 :: Amit Alter 31 Wie ist yousteve Wie gehe es dir hello1 :: Amit Alter 31 Wie geht es dir Hallo1 :: Amit Alter 31 Wie geht es dir? Wie sind yousteve Wie geht's dir hello1 :: Amit Alter 31 Wie yousteve sind Wie geht's dir hello1 :: Amit Alter 31 Wie sind youAnitha Wie geht es Ihnen Hallo 2 :: Arit Nachname urkude Wie sind youAnitha Wie sind Hallo ihr 2 :: Arit Nachname urkude Wie sind youAni Wie geht's dir Hallo 2 :: Arit Nachname urkude Wie sind youAni Wie geht's dir Hallo 2 :: Arit Nachname urkude How are you Hallo 2 :: Arit Nachname urkude Wie geht es dirAni Wie geht es dirAni Wie geht es dir Hallo 2 :: Arit lastname urkude Wie youAni sind Wie geht's dir Hallo 2 :: Arit Nachname urkude Wie geht's dir Hallo 2 :: Arit Nachname urkude Wie youAni sind Wie sind youAni Wie geht's dir Hallo 2 :: Arit Nachname urkude Wie youAni sind Wie sind Sie Hallo 2 :: Arit lastname urkude
Sie synchronisieren auf einer statischen Methode sowie 2 Instanzmethoden, ist das, was Sie wollen ?. Warum nicht nur eine Methode verwenden und sehen, wie synchronisiert funktioniert – TheLostMind