Les premiers ordinateurs n'incluaient pas de système d'exploitation. Ils n'exécutaient qu'un seul programme du début à la fin, et ce programme avait accès à toutes les ressources de l'ordinateur. Avec le développement des ordinateurs et l’émergence des systèmes d’exploitation, les ordinateurs peuvent exécuter plusieurs programmes en même temps, et chaque programme s’exécute selon un processus distinct. Pourquoi faire ça ? Principalement basé sur les raisons suivantes :
Depuis que les ordinateurs ont évolué d'une tâche unique à une tâche multitâche, les programmes peuvent naturellement évoluer des programmes en série traditionnels aux programmes simultanés.
L'avantage des programmes en série est qu'ils sont simples et intuitifs. Mais les trois raisons ci-dessus ont également provoqué l'émergence de threads. L'ordinateur ci-dessus peut exécuter des programmes dans des processus distincts, et les threads permettent à plusieurs flux de contrôle de programme d'exister au sein du même processus Plusieurs threads d'un programme peuvent également être programmés pour être exécutés par plusieurs processeurs en même temps. Cela équivaut à l'ordinateur exécutant plusieurs programmes (processus) en même temps et au programme exécutant plusieurs threads en même temps. Autrement dit, exécuter des threads au sein du processus.
Les threads sont également appelés processus légers. Les systèmes d'exploitation d'aujourd'hui sont tous programmés avec des threads comme unité de base. Étant donné que les ressources sont partagées entre les threads, s'il n'y a pas de mécanisme de synchronisation clair, cela entraînera une exécution désordonnée entre les threads, des erreurs ou des échecs de données et des exceptions. C’est souvent là que réside la difficulté de la programmation concurrente.
De mon point de vue, la programmation dite concurrente est l'utilisation de threads. Les threads peuvent convertir de nombreux flux de travail asynchrones en flux de travail en série, et la programmation simultanée consiste à réaliser une synchronisation dans des situations asynchrones pour répondre aux besoins.
Alors quels sont les avantages et les risques des threads ?
Les threads peuvent réduire efficacement les coûts de développement et de maintenance des programmes et améliorer les performances. Réduisez la complexité du code et simulez mieux les méthodes de travail humaines.
La prise en charge des threads est une arme à double tranchant, et le développement de programmes simultanés impose également des exigences de niveau plus élevé aux programmeurs.
Il existe un bon exemple en matière de sécurité :
value++;
Avec une seule ligne de code, il n'y a aucun problème dans un programme monothread, mais des conséquences inattendues peuvent survenir dans les programmes multithread.
Il y a trois étapes pour exécuter cette ligne de code : 1. Lire la valeur ; 2. Ajouter 1 à la valeur ; 3. Réattribuer la valeur ajoutée à la valeur. Le programme peut être exécuté alternativement par plusieurs threads pendant cette période, si deux threads lisent la valeur en même temps, obtiennent la même valeur et y ajoutent 1 en même temps, le résultat est que différents threads obtiennent la même valeur. . Et nous espérons que cette valeur sera ajoutée deux fois.
Chaque programme Java utilise des threads. Même si vous créez des threads sans les créer explicitement dans le programme, le framework que vous utilisez crée toujours des threads. Ces threads doivent être thread-safe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!