Maison >Java >javaDidacticiel >Développement Java : comment utiliser le multithreading pour implémenter le traitement de tâches simultanées
Développement Java : Comment utiliser le multithreading pour implémenter le traitement des tâches simultanées
Introduction :
Dans le développement de logiciels modernes, un traitement efficace des tâches simultanées est crucial. En Java, le multithreading est un moyen courant et puissant d’implémenter le traitement de tâches simultanées. Cet article vous expliquera comment utiliser le multithreading pour implémenter le traitement de tâches simultanées, avec des exemples de code spécifiques.
Méthode 1 : hériter de la classe Thread
public class MyThread extends Thread { public void run() { // 在这里写入线程运行时需要执行的代码 } } // 创建并启动线程 MyThread myThread = new MyThread(); myThread.start();
Méthode 2 : implémenter l'interface Runnable
public class MyRunnable implements Runnable { public void run() { // 在这里写入线程运行时需要执行的代码 } } // 创建并启动线程 Thread thread = new Thread(new MyRunnable()); thread.start();
ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建线程池,指定线程数量为5 for (int i = 0; i < 10; i++) { executorService.execute(new MyRunnable()); // 提交任务给线程池执行 } executorService.shutdown(); // 关闭线程池
Dans l'exemple de code ci-dessus, nous avons créé un pool de threads avec une taille fixe de 5. Ensuite, nous soumettons 10 tâches au pool de threads pour une exécution en boucle. Enfin, nous appelons la méthode shutdown() pour arrêter le pool de threads.
Utilisez des variables partagées :
public class SharedData { private int count; public synchronized void increment() { count++; } public synchronized int getCount() { return count; } } SharedData sharedData = new SharedData(); // 创建并启动多个线程 for (int i = 0; i < 10; i++) { Thread thread = new Thread(() -> { sharedData.increment(); }); thread.start(); } // 等待所有线程执行完毕 Thread.sleep(1000); System.out.println(sharedData.getCount()); // 输出结果应为10
Utilisez les méthodes wait(), notify() :
public class Message { private String content; private boolean isEmpty = true; public synchronized String take() { while (isEmpty) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } isEmpty = true; notifyAll(); return content; } public synchronized void put(String content) { while (!isEmpty) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } isEmpty = false; this.content = content; notifyAll(); } } Message message = new Message(); // 创建并启动多个线程 Thread producerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { message.put("Message " + i); Thread.sleep(1000); } }); Thread consumerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { System.out.println(message.take()); Thread.sleep(1000); } }); producerThread.start(); consumerThread.start();
public class Counter { private int count = 0; public synchronized void increment() { count++; } public synchronized void decrement() { count--; } public synchronized int getCount() { return count; } } Counter counter = new Counter(); // 创建并启动多个线程 Thread incrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { counter.increment(); } }); Thread decrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { counter.decrement(); } }); incrementThread.start(); decrementThread.start(); incrementThread.join(); decrementThread.join(); System.out.println(counter.getCount()); // 输出结果应为0
Conclusion :
L'utilisation du multi-threading peut efficacement réaliser un traitement de tâches simultanées. Dans cet article, nous expliquons comment créer des threads, utiliser des pools de threads, implémenter la communication entre les threads et synchroniser le contrôle entre les threads, et fournissons des exemples de code spécifiques. J'espère que ce contenu vous sera utile pour utiliser le multithreading pour implémenter le traitement de tâches simultanées dans le développement 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!