Maison  >  Article  >  Java  >  Quelles sont les manières de créer des threads en Java ? Trois façons de créer des threads en Java

Quelles sont les manières de créer des threads en Java ? Trois façons de créer des threads en Java

不言
不言original
2018-09-25 15:49:144218parcourir

Ce que cet article vous apporte, c'est quelles sont les manières de créer des threads en Java ? Les trois façons de créer des threads en Java ont une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

1. Héritez de la classe Thread pour créer

En héritant de Thread et en réécrivant son run(), le thread exécute la tâche dans la méthode run. La sous-classe créée peut exécuter des méthodes de thread en appelant la méthode start().

En héritant de la classe de thread implémentée par Thread, plusieurs threads ne peuvent pas partager les variables d'instance de la classe de thread. (Besoin de créer différents objets Thread, naturellement non partagés)

Exemple :

/**
 * 通过继承Thread实现线程
 */
public class ThreadTest extends Thread{
  
  private int i = 0 ;

    @Override
    public void run() {
        for(;i<50;i++){
            System.out.println(Thread.currentThread().getName() + " is running " + i );
        }
    }

    public static void main(String[] args) {
        for(int j=0;j<50;j++){if(j=20){
                new ThreadTest().start() ;
                new ThreadTest().start() ;
            }
        }
    }
}

2. Créer des fils de discussion via Runnable interface Class

Cette méthode doit d'abord définir une classe pour implémenter l'interface Runnable et remplacer la méthode run() de l'interface. Cette méthode run est le corps d'exécution du thread. Créez ensuite un objet de la classe d'implémentation Runnable comme cible de paramètre pour créer l'objet Thread Cet objet Thread est le véritable objet thread. Les classes Thread qui implémentent l'interface Runnable partagent des ressources entre elles.

/**
 * 通过实现Runnable接口实现的线程类
 */
public class RunnableTest implements Runnable {
    private int i ;
    @Override
    public void run() {
        for(;i2cacd927a2f1bfc8f9f91fcd8ff8576a task = new FutureTaskc0f559cc8d56b43654fcbe4aa9df7b4a((Callablec0f559cc8d56b43654fcbe4aa9df7b4a)()->{
           int i = 0 ;
           for(;i<100;i++){
               System.out.println(Thread.currentThread().getName() + "的循环变量i的值 :" + i);
           }
           return i;
        });
       for(int i=0;i<100;i++){
           System.out.println(Thread.currentThread().getName()+" 的循环变量i : + i");
           if(i==20){
               new Thread(task,"有返回值的线程").start();
           }
       }
       try{
           System.out.println("子线程返回值 : " + task.get());
        }catch (Exception e){
           e.printStackTrace();
        }
    }
}

Résumé

Grâce aux trois méthodes ci-dessus, elles peuvent en fait être classées en deux catégories : hériter de classes et implémenter des interfaces. Par rapport à l'héritage, l'implémentation de l'interface peut être plus flexible et ne sera pas limitée par le mécanisme d'héritage unique de Java. Et les ressources peuvent être partagées en implémentant des interfaces, ce qui convient au traitement multithread de la même ressource. La connaissance des threads est riche et compliquée, et plus de détails doivent être appris et maîtrisés.

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!

Déclaration:
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