Problèmes de détails multithread
Similitudes et différences entre la méthode du sommeil et la méthode d'attente?
Similitudes:
Laissez le fil dans un état gelé.
Différences:
Le sommeil doit spécifier l'heure
L'attente peut spécifier du temps ou non
Le temps de sommeil est écoulé, le fil est dans un état de blocage temporaire ou un état de course
Si l'attente n'a pas le temps, elle doit être éveillée en notification ou en avertir
Le sommeil ne doit pas être défini en synchronisation
L'attente doit être définie en synchronisation
Quand tous sont définis en synchronisation
Le sommeil libère les droits d'exécution, pas les verrous
attendre pour libérer les droits d'exécution, verrouiller
syschronized (obj) {wait (); // 0 1 2 code ...} syschronized (obj) {notifyall (); // 3 code ...}Comment arrêter un fil
Méthode d'arrêt
La méthode d'arrêt est obsolète. J'ai trouvé qu'il existe d'autres solutions après avoir lu la description.
Fin du thread: laissez le code de la tâche du thread être exécuté et la méthode d'exécution se termine
Comment terminer la méthode d'exécution?
En définissant une boucle
Remarque: Peut-il encore juger la marque si le fil est dans un état gelé dans la tâche?
Le soi-disant état d'interruption ne signifie pas arrêter le fil.
L'état d'interruption d'interruption provoque si le thread cible attend longtemps, la méthode d'interruption doit être utilisée pour interrompre l'attente pour la soi-disant interruption n'est pas d'arrêter le fil.
La fonction de l'interruption consiste à effacer l'état de congélation du thread et à restaurer l'état en cours d'exécution vers le thread (laissez le thread requalifier pour l'exécution du processeur).
Parce qu'il est obligatoire, il y aura une exception InterruptedException, et vous pouvez prendre des exceptions en capture.
Dans la gestion des exceptions, modifiez la marque pour terminer la boucle et laissez la méthode d'exécution se terminer.
Fil de démon
Fil de démon: il peut également être compris comme un thread d'arrière-plan, et les fils de premier plan créés auparavant sont tous des threads de premier plan.
Tant que le thread appelle SetDaemon (true); Le fil peut être marqué comme un fil de démon.
Les threads d'arrière-plan frontal sont les mêmes lors de l'exécution, en obtenant les droits d'exécution du CPU.
Ce n'est que lorsqu'il se termine est un peu différent.
Le thread de premier plan doit se terminer à travers la méthode d'exécution et le fil doit se terminer.
Le thread d'arrière-plan peut également se terminer avec la méthode d'exécution et le fil se termine. Il y a une autre situation.
Lorsque tous les threads de premier plan dans la fin du processus, quel que soit l'état de l'état de l'arrière-plan, il se terminera et le processus se terminera.
Le processus se termine par les fils de premier plan sur tous.
Priorité du thread
Priorité du thread: identifié par les nombres, 1-10
Parmi eux, la priorité initiale par défaut est 5 et les trois niveaux de priorité les plus évidents sont de 1, 5 et 10.
setPriority (thread.max_priority);
Groupe de discussion
Groupe de threads: ThreadGroup: Le groupe de threads auquel appartient le nouvel objet thread peut être identifié via le constructeur de threads.
Les avantages des groupes de threads sont qu'ils peuvent effectuer des opérations unifiées sur plusieurs threads dans le même groupe.
Par défaut, ils appartiennent tous au groupe de threads principal.
Classe interne anonyme
Runnable rn = new runnable () {public void run () {}}; // Le code ci-dessus est équivalent à la classe anomyme implémente runnable {public void run () {}} runnable rn = new anomymous ();Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!