Le multithreading est un sujet inévitable et important en Java. Ci-dessous, nous développerons l'apprentissage du multi-threading. Le contenu suivant est une explication du contenu multi-thread Java avant de "ajouter des packages de juc dans JDK", qui comprend des interfaces telles que Wait (), notify () dans la classe d'objets;
Remarque: Le package JUC fait référence au package java.util.concurrent, qui est réalisé par Java Master Doug Lea et ajouté à Java dans la version JDK 1.5.
Avant d'entrer dans l'étude des chapitres suivants, comprenez d'abord certains concepts connexes de multithreading.
Diagramme d'état du thread
illustrer:
Les fils comprennent les 5 états suivants.
1. Nouvel état: une fois l'objet de thread créé, il entre dans le nouvel état. Par exemple, thread thread = new Thread ().
2. Runnable: également connu sous le nom de "État exécutable". Une fois l'objet thread créé, d'autres threads appellent la méthode start () de l'objet pour démarrer le thread. Par exemple, thread.start (). Un fil dans un état prêt peut être prévu pour s'exécuter par le CPU à tout moment.
3. État d'exécution (en cours d'exécution): Le thread obtient des autorisations CPU pour l'exécution. Il convient de noter que les threads ne peuvent entrer que l'état en cours d'exécution à partir de l'état prêt.
4. État bloqué: l'état bloqué signifie que le fil abandonne les droits d'utilisation du CPU pour une raison quelconque et cesse temporairement de fonctionner. Ce n'est que lorsque le fil entre dans l'état prêt qu'il a une chance d'aller à l'état de course. Il existe trois types de blocage:
(01) En attendant de bloquer - en appelant la méthode Wait () du thread, laissez le fil d'attente pour l'achèvement d'un certain travail.
(02) Blocage synchronisé - un fil ne parvient pas à acquérir un verrou de synchronisation synchronisé (car le verrou est occupé par d'autres threads), il entrera dans un état de blocage synchronisé.
(03) Autre blocage - le fil entrera un état de blocage en appelant Sleep () ou join () du thread ou en émettant une demande d'E / S. Lorsque l'état de sommeil () a chronométré, join () a attendu que le fil se termine ou l'expression, ou le traitement d'E / S a été terminé, le fil est rentré à l'état prêt.
5. État mort: le thread a fini d'exécuter ou de quitter la méthode run () en raison d'une exception, et le fil met fin à son cycle de vie.
Le contenu impliqué dans ces 5 états comprend la classe d'objets, le thread et les mots clés synchronisés. Nous apprendrons ces contenus un par un dans les chapitres suivants.
Classe d'objets, définit les fonctions de sommeil / réveil telles que Wait (), Notify (), notifyall (), etc.
La classe de thread définit certaines fonctions de fonctionnement du thread de colonne. Par exemple, Sleep () Sleep Fonction, Interrupt () Fonction Interrupt, getName () Obtenez le nom du thread, etc.
Synchronisé est un mot-clé; La fonction de synchronisée est de permettre aux threads d'acquérir le verrou de synchronisation de l'objet.
Lorsque nous introduisons Wait (), Notify () et d'autres méthodes en détail plus tard, nous analyserons pourquoi "attendre (), notifier () et d'autres méthodes devraient être définies dans la classe d'objets, pas la classe de threads."