/ / Welche Klasse run () Methode wurde zuerst aufgerufen? und warum? - Java, Multithreading

Welche Klasse run () -Methode wurde zuerst aufgerufen? und warum? - Java, Multithreading

Ich habe den folgenden Code mit Threading versuchtIn diesem Code habe ich zwei Ausführungsmethoden in zwei verschiedenen Klassen deklariert. und ich habe diese Methode von meiner Hauptmethode aufgerufen. Eigentlich möchte ich wissen, welche run () -Methode zuerst aufgerufen wird. Ich habe unterschiedliche Ausgaben für den gleichen Code, wenn ich immer wieder laufe.

Mein Code:

class parent
{
public synchronized void display1()
{
System.out.println("Dispaly_1 is invoked");
}
public synchronized void display2()
{
System.out.println("Dispaly_2 is invoked");
}
}
class abc extends Thread{
parent p;
public abc(parent p){
this.p = p;
}

public void run(){
System.out.println("abc start...");
p.display1();
}
}
class xyz extends Thread{
parent p;
public xyz(parent p){
this.p = p;
}

public void run(){
System.out.println("xyz start...");
p.display2();
}
}

public class ThreadExample {

public static void main(String[] args) {

parent p=new parent();
abc ob=new abc(p);
xyz ob1=new xyz(p);
ob.start();
ob1.start();

}

}

Ausgänge: 1. Mal

abc start...
xyz start...
Dispaly_2 is invoked
Dispaly_1 is invoked

2. Mal

xyz start...
Dispaly_2 is invoked
abc start...
Dispaly_1 is invoked

3. Mal

abc start...
Dispaly_1 is invoked
xyz start...
Dispaly_2 is invoked

Ich habe mit dieser Ausgabe verwechselt, Jeder kann dieses Ergebnis des Codes erklären. Ihre Hilfe wird es zu schätzen wissen. Vielen Dank

Antworten:

5 für die Antwort № 1

Welche Klasse run () Methode wird zuerst aufgerufen?

Entweder.

und warum?

Es ist unbestimmt. Bis zum Thread Scheduler.

Wenn Sie eine sequenzielle Ausführung wünschen, verwenden Sie keine Threads.


1 für die Antwort № 2

Es hängt alles vom Scheduler ab. Ein Thread kann von Scheduler unabhängig verwaltet werden. Auch wenn Sie zuerst Ihren abc-Thread starten, wird xyz möglicherweise zuerst vom Scheduler ausgeführt oder umgekehrt.

Der zuerst gestartete Thread wird nicht immer zuerst ausgeführt.

Hoffe, meine Antwort gibt Klarheit über Scheduler.