La conversion d'un monothread à un multithread offre bien plus que de simples avantages. Cela a aussi un prix. N'utilisez pas le multithreading dans votre application simplement parce que vous le pouvez. Vous devriez avoir une bonne idée de ce que vous gagnerez en faisant cela, et les avantages dépasseront les coûts. En cas de doute, essayez de tester pour mesurer les performances ou la réactivité d'une application au lieu de simplement deviner.
Conception plus complexe
Bien que certaines parties du multi-threading soient plus simples que le monothreading, d'autres parties sont plus complexes. L’accès aux données partagées via du code exécuté à partir de plusieurs threads nécessite une attention particulière. L'interaction des threads est toujours simple en principe. Les erreurs résultant d’une synchronisation incorrecte des threads sont difficiles à détecter, à se produire et à corriger.
Surcharge de changement de contexte
Lorsqu'un processeur passe d'un thread à un autre, le processeur doit enregistrer les données locales du thread actuel, pointeur de programme et d'autres informations, ainsi que le chargement des données locales du thread suivant, le pointeur de programme à exécuter. Ce commutateur est appelé « commutateur de contexte ». Le CPU passe du contexte d'exécution d'un thread au contexte d'exécution d'un autre thread.
Le changement de contexte n'est pas bon marché. Vous ne voulez pas basculer entre les threads plus longtemps que nécessaire.
Augmenter la consommation de ressources
Un thread nécessite certaines ressources de l'ordinateur pour fonctionner. De plus, un thread du CPU nécessite de la mémoire pour maintenir sa pile locale. Certaines ressources peuvent également être occupées au sein du thread de gestion du système d'exploitation. Essayez de créer un programme avec 100 threads qui ne fait rien d'autre qu'attendre et voyez combien de mémoire il consomme lors de son exécution.
Ce qui précède est le contenu du coût multithread Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !