Un bug s'est produit lors de l'exécution d'un programme aujourd'hui, c'est-à-dire qu'une tâche de sous-thread exécutée par la fonction principale a été lancée avant d'être terminée. Cependant, après avoir ajouté sleep() au programme principal, le sous-thread s'exécutera normalement et sera lancé (mais il ne fonctionnera pas si le temps de veille est trop court). Le sous-thread de débogage est principalement bloqué sur la ligne de code qui effectue les opérations de base de données (peut-être parce que cela prend plus de temps et que le thread principal n'a pas le temps d'attendre que vous ayez terminé...).
Vérifiez si votre fil de discussion enfant est défini
setDaemon(true)
, Jvm se fermera dans les situations suivantes :Quand tous les threads en cours d'exécution sont des threads démons
ou lorsqu'aucun thread non-démon n'est en cours d'exécution
Il n'y a pas de relation parent-enfant entre les fils. Si vous devez attendre, vous pouvez envisager la méthode
join()
. Référence :/a/11...