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.
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.
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(); } }
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(); } }
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();
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();
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);
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); } }
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); } }
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!