En tant qu'excellent langage de programmation, Java est largement utilisé dans le développement au niveau de l'entreprise. Parmi eux, la programmation multithread est l'un des contenus essentiels de Java. Dans cet article, nous présenterons comment utiliser les techniques de programmation multithread de Java, ainsi que des exemples de code spécifiques.
Il existe deux façons de créer un thread en Java, à savoir hériter de la classe Thread et implémenter l'interface Runnable.
La manière d'hériter de la classe Thread est la suivante :
public class ExampleThread extends Thread { public void run() { //线程执行的代码 } }
La manière d'implémenter l'interface Runnable est la suivante :
public class ExampleRunnable implements Runnable { public void run() { //线程执行的代码 } }
Il convient de noter que la manière d'implémenter l'interface Runnable est plus recommandée. Étant donné que les classes Java ne peuvent être héritées qu'individuellement, si vous héritez de la classe Thread, vous ne pouvez pas hériter d'autres classes. De plus, l’implémentation de l’interface Runnable s’inscrit davantage dans la pensée orientée objet, qui consiste à séparer les threads de leurs tâches spécifiques et à réduire le couplage entre classes.
Dans la programmation multithread, étant donné que plusieurs threads sont exécutés simultanément, une incohérence des données peut survenir si aucun traitement n'est effectué. À cette fin, Java fournit des mécanismes de synchronisation et de verrouillage pour contrôler l'accès entre plusieurs threads.
Le mécanisme de synchronisation peut être ajouté aux méthodes ou aux blocs de code, comme suit :
public synchronized void method(){ //线程要执行的代码 } public void run() { synchronized(this) { //线程要执行的代码 } }
La fonction du mécanisme de synchronisation est de garantir qu'un seul thread peut accéder au bloc de code ou à la méthode synchronisé en même temps. Cela évite les courses de données et les incohérences des données.
L'utilisation de verrous peut obtenir un contrôle plus puissant, comme suit :
Lock lock = new ReentrantLock(); public void method(){ lock.lock(); try{ //线程要执行的代码 }finally{ lock.unlock(); } }
La fonction des verrous est la même que celle du mécanisme de synchronisation, mais les verrous peuvent également obtenir un contrôle plus complexe. Par exemple, vous pouvez demander un verrou via la méthode lock() et libérer le verrou via la méthode unlock(). Vous pouvez également essayer de demander un verrou via la méthode tryLock(), attendre un certain temps, puis abandonnez la candidature si elle n’est pas demandée.
Le pool de threads est un composant courant de la programmation multithread en Java. Lors de la création de threads, si les threads sont fréquemment créés et détruits, cela entraînera un gaspillage de ressources système et dégradera les performances. Le pool de threads peut réutiliser les threads déjà créés pour améliorer l'utilisation des threads et les performances du système.
Le pool de threads est créé et utilisé comme suit :
ExecutorService threadPool = Executors.newFixedThreadPool(10); for(int i=0;i<100;i++){ threadPool.execute(new Runnable(){ public void run(){ //线程执行的代码 } }); }
Dans le code ci-dessus, nous utilisons le pool de threads pour exécuter 100 tâches. Parmi elles, la méthode newFixedThreadPool(10) crée un pool de threads d'une taille fixe de 10, et la méthodeexecute() est utilisée pour soumettre des tâches au pool de threads.
L'avantage du pool de threads est que vous pouvez contrôler l'utilisation des ressources du système en définissant la taille du pool de threads et réduire la surcharge de création et de destruction des threads. De plus, le pool de threads peut également gérer des problèmes tels que les exceptions et l'annulation de tâches, avec une meilleure maintenabilité et fiabilité.
Résumé
Les compétences en programmation multithread de Java impliquent la création de threads, la synchronisation et le verrouillage, les pools de threads et bien d'autres aspects. À tout moment, la conception multithread doit prendre en compte la cohérence des données et une grande fiabilité. Par conséquent, nous devons maîtriser les compétences de base en programmation multithread de Java afin d'écrire des programmes simultanés de haute qualité.
Dans cet article, nous expliquons comment créer des threads en Java, l'utilisation de la synchronisation et des verrous, ainsi que l'application de pools de threads. J'espère que cela aide.
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!