Maison  >  Article  >  Java  >  Une brève introduction à JAVA

Une brève introduction à JAVA

怪我咯
怪我咯original
2017-06-23 13:52:061310parcourir

Bref historique

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 :

1.Utilisation des ressources Pendant que le programme attend, l'ordinateur peut exécuter un autre programme, et la même ressource peut être utilisée par différents programmes, ce qui améliore sans aucun doute utilisation des ressources.
2.Équité Différents utilisateurs et programmes ont les mêmes droits d'utilisation de l'ordinateur. Chaque programme partage les ressources via un découpage temporel, au lieu d'attendre la fin de l'exécution du programme précédent avant de démarrer le programme suivant.
3.Commodité Chaque programme fonctionne indépendamment et communique entre eux si nécessaire, ce qui est plus facile à mettre en œuvre qu'un seul programme accomplissant toutes les tâches.

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 ?

Avantages 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.

Avantage 1. Faites jouer pleinement les fonctions puissantes des systèmes multiprocesseurs de plus en plus parfaits, rendant le rôle des threads particulièrement évident. Étant donné que différents threads peuvent être planifiés par plusieurs processeurs en même temps, en particulier lors des opérations d'E/S, le temps d'attente du programme est réduit. Les multiprocesseurs améliorent l'efficacité de l'exécution du programme, augmentant ainsi le débit du système.
Avantage 2. Réduisez la difficulté de modélisation. Il est plus facile de faire la même chose tout le temps que de faire plusieurs choses. Utilisez des threads pour affiner les tâches du programme et attribuer plusieurs tâches à plusieurs threads. Chaque thread a une seule tâche et communique entre eux si nécessaire. Il est moins coûteux qu'un seul thread de changer de tâche.
Avantage 3. Simplifiez le traitement des événements asynchrones Lorsqu'une requête est émise pour attendre une réponse, l'ensemble du programme doit-il attendre ? Cela signifie que toutes les autres demandes seront bloquées. Tout comme lorsque vous discutez, l'autre partie doit répondre avant que vous puissiez prononcer la phrase suivante. C'est évidemment déraisonnable. Si chaque requête est traitée par un thread, les threads sont indépendants et ne s'influencent pas les uns les autres, ce qui résout le problème. Bien sûr, si vous devez savoir ce que l’autre partie a dit en répondant dans une discussion, faites attention à la sécurité des threads.
Avantage 4. Interface utilisateur plus réactive Les programmes GUI traditionnels sont monothread. Si l'un des événements utilisateur prend trop de temps à traiter, l'ensemble du programme sera bloqué, ce qui aggravera l'expérience utilisateur. Si certaines opérations fastidieuses sont affectées à un thread distinct, d'autres événements seront toujours traités par le thread, ce qui rendra l'interface utilisateur fluide.

Risque lié aux threads

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.

Risque 1. Problèmes de sécurité La programmation simultanée peut provoquer des erreurs qui ne se produisent pas dans les programmes monothread.
Risque2. Problème de vivacité La définition de la vivacité est « quelque chose de bien va certainement se produire ». Les boucles infinies dans un seul thread sont des problèmes de vivacité. Si le thread A attend que le thread B libère les ressources qu'il détient et que le thread B ne les a pas libérées, le thread A attendra indéfiniment. Il s'agit d'un problème d'activité.
Risque 3. Problèmes de performance La performance est « la bonne chose se produit le plus rapidement possible ». Une bonne conception de concurrence améliorera les performances, et vice versa, réduira les performances. Après tout, le démarrage de threads consomme également des ressources.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn