L'impasse est un bug au niveau du système d'exploitation et est l'abréviation de l'impasse du processus. Il a été proposé pour la première fois par Dijkstra lors de l'étude des algorithmes de banquiers en 1965. C'est l'un des problèmes les plus difficiles dans les systèmes d'exploitation informatique et même l'ensemble du domaine de la programmation simultanée.
En fait, il y a beaucoup de choses dans le monde de l'ordinateur qui doivent être résolues par plusieurs threads, car de cette manière, les ressources peuvent être utilisées pour maximiser l'efficacité de l'informatique. Cependant, en fait, il existe de nombreuses situations dans les systèmes informatiques où les ressources ne peuvent être utilisées que par un seul processus à la fois, comme les imprimantes, et un seul processus peut le contrôler en même temps. Dans un environnement de programmation multicanal, plusieurs processus partagent souvent ces ressources, et un processus peut nécessiter plus d'une ressource. Par conséquent, plusieurs processus concurrenceront les ressources limitées et l'ordre d'avancement sera mal, formant ainsi une situation d'attente du cycle indéfini. Nous appelons cette impasse de l'État. Pour le dire simplement, l'impasse fait référence à une situation où plusieurs processus traversent les ressources qu'ils occupent et restent indéfiniment dans une impasse. De toute évidence, s'il n'y a pas de force externe, tous les processus impliqués dans l'impasse seront toujours bloqués.
Nom du fichier: DeadthreadbyExtend.java
Note:
1. Lors du démarrage d'un thread, la méthode de démarrage peut être utilisée. La méthode d'exécution peut également être appelée, mais elle n'est qu'équivalent à un appel normal et exécutée dans le thread actuel.
2. Synchronisé ne peut pas modifier directement les variables.
3. Le bloc synchronisé ne force pas l'accès unique aux variables dans le bloc. Cela signifie simplement que le paramètre synchronisé (ARGS) est verrouillé lors de l'exécution d'instructions dans le bloc et n'est pas libéré tant que l'exécution n'est pas terminée.
Package com.ycf.study.thread; Sources de classe {int a; public void seta (int x) {synchronisé (this) {this.a = x; try {thread.sleep (2000);} catch (InterruptedException e) {e.printstacktrace ();}}}} Classics de DeedTheredByExtend {public static void main S1 = nouvelles sources (); sources S2 = nouvelles sources (); class Mythread1 étend java.lang.thread {@Override public void run () {System.out.println ("Thread 1 démarre"); synchronisé (S1) {System.out.println ("Thread 1 Applies to Motify S1"); S1.Seta (20); 1 quitte et publie Lock +++++++++++++++++++ ");}} class MyThread2 étend java.lang.thread {@Override public void run () {System.out.println (" Thread 2 Démarre "); Synchronisé (S2) {System.out.println (" Thread 2 Applies to Modify (S2) {System.out.println ("Thread 2 Applies to Modify (S2) S2 "); S2.Seta (20); System.out.println (" Thread 2 Modifications S2 Complete "); System.out.println (" Thread 2 s'applique pour modifier S1 "); S1.Seta (10); System.out.println (" Thread 2 modifie S1 Complete ");} System.out.println (" Thread 2 Exits et Releases the Lock +++++++++++++++ ");}} mythread1 mt1 = new myThread1 (); myThread2 mt2 = new myThread2 (); mt1.start (); mt2.start ();}}Résumer
Ce qui précède est tout sur l'exemple de code d'impasse du thread Java dans cet article, j'espère que cela sera utile à tout le monde. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien à ce site.