Que voulez-vous dire par "suspendu"? Si vous faites référence au changement de contexte entre les threads, vous avez des trous dans votre compréhension du multithreading. C'est la même chose que le multitâche dans un système d'exploitation: vous exécutez Word et Explorer en même temps sur votre machine, et l'application ne meurt pas lorsque l'autre doit être exécutée - le système d'exploitation place un processus/thread en attente en sauvegardant tout son état, puis récupère tout l'état pour le prochain thread, puis le met en mouvement. Cela va et vient si rapidement qu'il semble qu'ils s'exécutent en même temps - mais sur une machine monoprocesseur, un seul thread s'exécute réellement à un moment donné.
Le thread lui-même ne "sait" pas cela - seulement s'il fonctionne continuellement dans une boucle serrée vérifiant l'heure, il remarquera que le temps saccades: Le temps augmente doucement pendant quelques millisecondes, mais soudainement le temps saute vers l'avant et continue encore en douceur pour un nouvel ensemble de millisecondes. Le saut est quand un autre thread était en cours d'exécution. Chaque période de bon fonctionnement est appelée time slice, ou quantique. Mais si le thread n'a pas besoin du processeur, par ex. lorsqu'il attend des E/S, le système d'exploitation le récupère avant la fin de la tranche de temps.
Le thread se termine (dies) lorsque vous quittez/revenez de la méthode run() - pas avant.Pour l'extraction de plusieurs connexions HTTP, le multi-thread est idéal: le thread utilisera la plupart du temps en attente des octets entrants sur le réseau - et pendant qu'il attend, l'OS le sait et enfonce le thread dans "IO wait", au lieu d'exécuter d'autres threads entre temps (ou gaspille juste des cycles si aucun thread n'a besoin de fonctionner, par exemple tout le monde attend des E/S - ou dans ces jours, le processeur ralentit).
Courte question, réponse courte: oui, c'est possible – PeterMmm
merci les gens. Je me demandais simplement comment cela est possible puisque chaque thread peut aller dans l'état exécutable et suspendre ses opérations avant que la réponse ne soit récupérée ..... – Andreas
désolé de ne pas l'avoir écrit dans le q – Andreas