Maison  >  Article  >  Java  >  Comment créer un fil de discussion en Java

Comment créer un fil de discussion en Java

尚
original
2019-12-26 14:11:375460parcourir

Comment créer un fil de discussion en Java

Java utilise la classe Thread pour représenter les threads, et tous les objets thread doivent être des instances de la classe Thread ou de ses sous-classes. Java peut créer des threads de trois manières, comme suit :

1) Hériter de la classe Thread pour créer un thread

2) Implémenter l'interface Runnable pour créer un thread

3 ) Utilisez Callable et Future pour créer des fils de discussion

Jetons un coup d'œil à ces trois méthodes de création de fils de discussion respectivement.

Les étapes pour hériter de la classe Thread pour créer un thread sont les suivantes :

1]d Définir une sous-classe de la classe Thread et remplacer la méthode run() de la classe. Le corps de la méthode est la tâche que le thread doit accomplir. La méthode run() est également appelée corps d'exécution du thread.

2] Créez une instance de la sous-classe Thread, c'est-à-dire créez un objet thread

3] Démarrez le thread, c'est-à-dire appelez la méthode start() du thread

Exemple :

public class MyThread extends Thread{//继承Thread类
  public void run(){
  //重写run方法
  }
}
public class Main {
  public static void main(String[] args){
    new MyThread().start();//创建并启动线程
  }
}

Les étapes pour implémenter l'interface Runnable pour créer un thread sont les suivantes :

1] Définir la classe d'implémentation du Interface Runnable, et remplace également la méthode run(), cette run() La méthode est le corps d'exécution du thread comme la méthode run() dans Thread

2] Créez une instance de la classe d'implémentation Runnable et utilisez cette instance comme cible de Thread pour créer un objet Thread. Cet objet Thread est le vrai thread Objet

3] La troisième partie consiste toujours à démarrer le thread en appelant la méthode start() du thread. object

Exemple :

public class MyThread2 implements Runnable {//实现Runnable接口
  public void run(){
  //重写run方法
  }
}
public class Main {
  public static void main(String[] args){
    //创建并启动线程
    MyThread2 myThread=new MyThread2();
    Thread thread=new Thread(myThread);
    thread().start();
    //或者    new Thread(new MyThread2()).start();
  }
}

Utilisez Callable et Future pour créer un fil de discussion. Les étapes sont les suivantes :

1] Créez une classe d'implémentation de l'objet Interface appelable, implémentez la méthode call(), puis créez une instance de la classe d'implémentation (à partir de java8, vous pouvez directement utiliser des expressions Lambda pour créer des objets appelables).

2] Utilisez la classe FutureTask pour envelopper l'objet Callable. L'objet FutureTask encapsule la valeur de retour de la méthode call() de l'objet Callable.

3] Utilisez l'objet FutureTask comme objet. cible de l'objet Thread pour le créer et le démarrer. Thread (car FutureTask implémente l'interface Runnable)

4] Appelez la méthode get() de l'objet FutureTask pour obtenir la valeur de retour une fois l'exécution du sous-thread terminée.

Exemple :

public class Main {
  public static void main(String[] args){
   MyThread3 th=new MyThread3();
   //使用Lambda表达式创建Callable对象
     //使用FutureTask类来包装Callable对象
   FutureTask<Integer> future=new FutureTask<Integer>(
    (Callable<Integer>)()->{
      return 5;
    }
    );
   new Thread(task,"有返回值的线程").start();//实质上还是以Callable对象来创建并启动线程
    try{
    System.out.println("子线程的返回值:"+future.get());//get()方法会阻塞,直到子线程执行结束才返回
    }catch(Exception e){
    ex.printStackTrace();
   }
  }
}

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base 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!

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