/ / Quelle méthode run () est invoquée en premier? et pourquoi? - java, multithreading

Quelle méthode run () est invoquée en premier? et pourquoi? - java, multithreading

J'ai essayé le code suivant en utilisant le threadingconcept, Dans ce code, j'ai déclaré deux méthodes d'exécution dans deux classes différentes. et j'ai invoqué ces méthodes de ma méthode principale. En fait, ce que je veux savoir, c'est quelle méthode run () est invoquée en premier? J'ai une sortie différente pour le même code, quand je m’exécute encore et encore.

Mon 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();

}

}

Les sorties: 1ère fois

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

2ème fois

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

3ème fois

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

J'ai confondu avec cette sortie, n'importe qui peut expliquer ce résultat du code. Votre aide appréciera. Merci

Réponses:

5 pour la réponse № 1

Quelle méthode run () est invoquée en premier?

Non plus.

et pourquoi?

C'est indéterminé. Jusqu'à l'ordonnanceur de threads.

Si vous voulez une exécution séquentielle, n’utilisez pas de threads.


1 pour la réponse № 2

Tout dépend du planificateur. Un thread peut être géré indépendamment par Scheduler.even si vous démarrez d’abord votre thread abc, xyz peut être exécuté en premier par le planificateur ou inversement.

Le premier thread démarré ne s'exécutera pas tout le temps.

J'espère que ma réponse donne des précisions sur le planificateur.