Maison > Java > JavaBase > Comment implémenter le multithreading Java

Comment implémenter le multithreading Java

angryTom
Libérer: 2019-11-11 13:55:32
original
3609 Les gens l'ont consulté

Comment implémenter le multithreading Java

Comment implémenter le multi-threading Java

Le multi-threading Java est l'une des fonctionnalités avancées de Java. Grâce au multi-threading, nous pouvons réaliser un travail multitâche et collaboratif en même temps, et améliorer l'efficacité du programme dans certaines circonstances. Cependant, le multi-threading Java doit toujours être utilisé avec prudence. Tout d'abord, le multi-threading Java nécessite. des compétences élevées en codage. Une fois utilisé de manière inappropriée, cela provoquera des erreurs de programme et des threads. Une concurrence malveillante pour les blocages entraînera le gel du programme. Deuxièmement, l'abus du multithreading peut perturber certains paramètres clés. Dans ce cas, la synchronisation et la gestion des verrous entre les threads doivent être effectuées. Troisièmement, le changement de thread nécessite des coûts supplémentaires, souvent appelés « changement de contexte ». S'il est mal utilisé, non seulement il n'améliorera pas l'efficacité, mais entraînera une forte diminution de l'efficacité. (Tutoriel recommandé : tutoriel Java)

1. Hériter du fil pour implémenter le multi-threading

Java fournit un fil de super classe que nous pouvons étendre , une fois que vous en avez hérité, vous pouvez implémenter le multi-threading en remplaçant la méthode run. Le code spécifique est le suivant :

import java.io.*;
 
public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new MyThread();
        Thread t2 = new MyThread();
        t1.start();
        t2.start();
    }
}
Copier après la connexion

2 En implémentant l'interface Runnable,

<. 🎜 >Parce que pour certaines classes, elles ne peuvent pas hériter de Thread pour implémenter le multi-threading, car Java stipule qu'une seule super classe peut être héritée en même temps, mais elle peut implémenter plusieurs interfaces en même temps, donc Runnable est encore plus populaire . Le code spécifique est le suivant :

import java.io.*;
 
public class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new MyThread());
        Thread t2 = new Thread(new MyThread());
        t1.start();
        t2.start();
    }
}
Copier après la connexion

La méthode ci-dessus définit directement la classe pour implémenter la méthode Runnable. En fait, elle peut également être transformée en méthode de classe interne anonyme pour créer un Thread, comme suit :

import java.io.*;
 
public class MyThread {
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        t1.start();
        t2.start();
    }
}
Copier après la connexion

3. Implémenter un fil de discussion via Callable

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
 
public class MyThread implements Callable<Integer>{
    public static void main(String[] args){
        MyThread t1 = new MyThread();
        FutureTask<Integer> future = new FutureTask<Integer>(t1);
        new Thread(future,"呵呵哒").start();
    }
    @Override
    public Integer call() throws Exception {
        System.out.println(Thread.currentThread().getName());
        return null;
    }
}
Copier après la connexion

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:php.cn
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