Maison > Java > Javacommencer > Quelle est la différence entre la méthode start et la méthode run dans le thread Java

Quelle est la différence entre la méthode start et la méthode run dans le thread Java

王林
Libérer: 2021-05-01 12:04:04
avant
3336 Les gens l'ont consulté

Quelle est la différence entre la méthode start et la méthode run dans le thread Java

Les différences sont les suivantes :

Nous savons que les threads en Java sont implémentés via Java.lang.Thread, nous pouvons alors instancier Thread Un objet est utilisé pour créer un thread, puis appeler start() pour le démarrer. Cependant, une méthode spécifique run() de Thread peut également démarrer le thread. Alors, quelle est la différence entre ces deux méthodes ?

Statut du fil

在Java当中,线程通常有五种状态:创建、运行、阻塞、等待、终止
NEW------------------->新建状态,没有调用start()之前的状态
RUNNABLE---------->运行状态,(running执行中,ready就绪(等待cpu时间片))
BLOCKED------------>阻塞状态,
WAITING-------------->等待状态,没有明确的等待结束时间,调用wait()
TIMED_WAITING—>超时等待状态,有明确的等待时间,如:sleep(xxx)
TERMINATED-------->终止状态
Copier après la connexion

Principe du multi-threading :

Nous utilisons généralement le fil new pour démarrer un fil, puis appelons la méthode start pour démarrer, le fil sera dans l'état d'exécution est prêt, en attendant la planification du processeur, puis en exécutant la méthode run() dans le thread, en utilisant la méthode start réalise véritablement une opération multithread, car à ce stade, nous pouvons continuer à exécuter le code suivant sans attendre notre exécuter la méthode pour terminer. C'est ce qu'on appelle le multi-threading.

Que se passe-t-il si vous utilisez directement le thread pour exécuter la méthode run ?

Étant donné que la méthode run est une méthode ordinaire dans le thread, si vous appelez directement la méthode run(), elle s'exécutera dans le thread principal à ce moment-là, car il n'y a qu'un seul thread principal dans le programme If. il y a deux Threads qui appellent tous directement la méthode run(), donc leur ordre d'exécution doit être exécuté dans l'ordre et l'objectif du multi-threading n'est pas atteint.

Partage de vidéos d'apprentissage gratuit : Tutoriel vidéo Java

Comparaison de codes

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.start();
    }
}
Copier après la connexion

Appel de la méthode start(), le nom du fil est celui par défaut

Quelle est la différence entre la méthode start et la méthode run dans le thread Java

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.run();
    }
}
Copier après la connexion

Appelez run(), le nom du fil de discussion est principal

Quelle est la différence entre la méthode start et la méthode run dans le thread Java

Recommandations associées : Tutoriel d'introduction à Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal