Maison > Java > javaDidacticiel > Méthodes multithreading et exemples développés en Java

Méthodes multithreading et exemples développés en Java

WBOY
Libérer: 2023-06-18 18:30:08
original
841 Les gens l'ont consulté

Java est un langage de programmation populaire et l'un des langages de programmation multithread les plus utilisés. Le multithreading fait référence au fait de permettre à un programme d'effectuer plusieurs tâches en même temps, ce qui peut améliorer l'efficacité d'exécution du programme. Cet article présentera les méthodes multithreading et des exemples de développement Java.

  1. Le concept de base du multi-threading Java

Le multi-threading en Java est d'effectuer des tâches dans le code en créant plusieurs threads. Dans un programme monothread, chaque instruction est exécutée en séquence, tandis que dans un programme multithread, différents threads peuvent exécuter différentes instructions en même temps, ce qui améliore l'efficacité d'exécution du programme.

En Java, les threads sont implémentés via la classe Thread. Chaque thread est une unité d'exécution indépendante avec sa propre pile d'exécution et son propre flux de contrôle d'exécution. Les threads en Java sont divisés en threads utilisateur et threads démon. Lorsque tous les threads utilisateur ont fini de s'exécuter, le thread démon mettra également fin à son exécution.

  1. Comment implémenter le multi-threading en Java

Le multi-threading en Java peut être implémenté en implémentant l'interface Runnable ou en héritant de la classe Thread. L'utilisation de l'interface Runnable peut permettre la réutilisation du code, tandis que l'utilisation de la classe Thread peut obtenir plus de contrôle.

2.1 Implémenter l'interface Runnable

Pour utiliser l'interface Runnable, vous devez implémenter la méthode run() et écrire le code à exécuter par multi-threads dans la méthode run(). Pour utiliser l'interface Runnable, vous devez créer un objet Thread et démarrer le thread via l'objet Thread.

L'exemple de code est le suivant :

public class MyRunnable implements Runnable {

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyRunnable start");
    }

    public static void main(String[] args) {

        MyRunnable r = new MyRunnable();
        Thread t = new Thread(r);
        t.start();

    }
}
Copier après la connexion

2.2 Hériter de la classe Thread

Hériter de la classe Thread nécessite de remplacer la méthode run() et d'écrire le code à exécuter par plusieurs threads dans la méthode run().

L'exemple de code est le suivant :

public class MyThread extends Thread{

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyThread start");
    }

    public static void main(String[] args) {

        MyThread t = new MyThread();
        t.start();

    }
}
Copier après la connexion
  1. Méthodes courantes de multi-threading en Java

Le multithreading en Java peut être utilisé à l'aide de certaines méthodes courantes. Les méthodes suivantes sont couramment utilisées :

3.1 La méthode start()

start() est une méthode pour démarrer un fil de discussion.

L'exemple de code est le suivant :

Thread t = new Thread();
t.start();
Copier après la connexion

3.2 La méthode join()

join() est une méthode qui attend que le thread termine son exécution.

L'exemple de code est le suivant :

Thread t = new Thread();
t.start();
t.join();
Copier après la connexion

3.3 sleep()

la méthode sleep() est une méthode permettant de laisser le thread dormir pendant un certain temps.

L'exemple de code est le suivant :

Thread.sleep(1000);
Copier après la connexion
  1. Problèmes de synchronisation du multi-threading Java

Plusieurs threads en Java impliqueront des problèmes de synchronisation, et plusieurs threads accédant à la même ressource en même temps provoqueront des conflits. Java fournit le mot-clé synchronisé et l'interface Lock pour résoudre ce problème.

4.1 Mot-clé synchronisé

Le mot-clé synchronisé peut être utilisé pour modifier un objet ou une méthode afin de garantir qu'un seul thread peut exécuter cet objet ou cette méthode en même temps.

L'exemple de code est le suivant :

public class MyThread implements Runnable{

    private static int count = 0;

    @Override
    public synchronized void run() {
        for (int i = 0; i < 10000; i++) {
            count++;
        }
    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}
Copier après la connexion

4.2 Interface de verrouillage

L'interface de verrouillage fournit une méthode de verrouillage plus flexible et est plus raffinée que le mot-clé synchronisé.

L'exemple de code est le suivant :

public class MyThread implements Runnable{

    private static int count = 0;

    private Lock lock = new ReentrantLock();

    @Override
    public void run() {

        lock.lock();
        try {
            for (int i = 0; i < 10000; i++) {
                count++;
            }
        } finally {
            lock.unlock();
        }

    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}
Copier après la connexion
  1. Conclusion

Le multithreading en Java peut améliorer l'efficacité d'exécution du programme et est souvent utilisé en développement. Cet article présente les concepts de base, les méthodes d'implémentation, les méthodes courantes et les solutions aux problèmes de synchronisation dans le multithreading Java. J'espère que cela sera utile aux étudiants qui développent 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: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