DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Threads virtuels Java – Introduction facile
    Uncategorized

    Threads virtuels Java – Introduction facile

    février 24, 2023
    Threads virtuels Java - Introduction facile
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Les threads virtuels Java sont une nouvelle fonctionnalité introduite dans JDK 19. Il a le potentiel d’améliorer la disponibilité et la qualité du code d’une application en plus de réduire la consommation de mémoire. Cet article a pour but de présenter les threads virtuels Java d’une manière facilement compréhensible.


    Vidéo: Pour voir la présentation visuelle de cet article, cliquez ci-dessous :

    Cycle de vie des threads

    Cycle de vie typique d'un thread

    Fig : Cycle de vie typique d’un filetage

    Passons en revue le cycle de vie typique d’un thread :

    1. Le thread est créé dans un pool de threads
    2. Le thread attend dans le pool qu’une nouvelle demande arrive
    3. Une fois la nouvelle demande arrivée, le thread récupère la demande et effectue un appel de base de données backend pour traiter cette demande.
    4. Le thread attend une réponse de la base de données principale
    5. Une fois que la réponse revient de la base de données, le thread la traite et renvoie la réponse au client
    6. Le thread est renvoyé dans le pool de threads

    Les étapes 2 à 6 se répéteront jusqu’à la fermeture de l’application.

    Si vous remarquez, le fil ne fait réellement un vrai travail qu’aux étapes 3 et 5. Dans toutes les autres étapes (c’est-à-dire, l’étape #1, l’étape #2, l’étape #4, l’étape #6), il attend essentiellement (ou ne fait rien). Dans la plupart des applications, un nombre important de threads principalement attend pendant la plus grande partie de sa durée de vie.

    Architecture des threads de plate-forme

    Fig : Chaque thread de la plate-forme est mappé à un thread du système d'exploitation

    Fig : Chaque thread de la plate-forme est mappé à un thread du système d’exploitation

    Dans la version précédente de JVM (Java Virtual Machine), il n’y avait qu’un seul type de thread. C’est ce qu’on appelle un fil « classique » ou « plate-forme ». Chaque fois qu’un thread de plate-forme est créé, un thread du système d’exploitation lui est alloué. Ce n’est que lorsque le thread de la plate-forme quitte (c’est-à-dire qu’il meurt) la JVM que ce thread du système d’exploitation est libre d’effectuer d’autres tâches. Jusque-là, il ne peut pas effectuer d’autres tâches. Fondamentalement, il existe un mappage 1: 1 entre un thread de plate-forme et un thread de système d’exploitation.

    Selon cette architecture, le thread du système d’exploitation sera inutilement verrouillé à l’étape #1, étape #2, étape #4, étape #6 du cycle de vie du thread, même s’il ne fait rien pendant ces étapes. Étant donné que les threads du système d’exploitation sont des ressources précieuses et finies, le temps est largement perdu dans cette architecture de threads de plate-forme.

    Architecture des threads virtuels

    Fig : les threads du système d'exploitation ne sont pas alloués aux threads de la plate-forme tant que le travail réel n'a pas besoin d'être exécuté

    Fig : les threads du système d’exploitation ne sont pas alloués aux threads de la plate-forme tant que le travail réel n’a pas besoin d’être exécuté

    Fig : Les threads virtuels sont mappés sur les threads de la plate-forme lorsqu'ils effectuent un travail réel

    Fig : Les threads virtuels sont mappés sur les threads de la plate-forme lorsqu’ils effectuent un travail réel

    Afin d’utiliser efficacement les threads sous-jacents du système d’exploitation, des threads virtuels ont été introduits dans JDK 19. Dans cette nouvelle architecture, un thread virtuel sera affecté à un thread de plate-forme (alias fil porteur) uniquement lorsqu’il exécute un travail réel. Conformément au cycle de vie du thread décrit ci-dessus, ce n’est qu’au cours des étapes 3 et 5 que le thread virtuel sera affecté au thread de la plate-forme (qui à son tour utilise le thread du système d’exploitation) pour exécution. Dans toutes les autres étapes, le thread virtuel résidera en tant qu’objets dans la région de mémoire de tas Java, tout comme n’importe lequel de vos objets d’application. Ainsi, ils sont légers et plus efficaces.

    Qu’est-ce que ‘Stack Chunk Object’?

    Lorsqu’un thread virtuel n’exécute pas un travail réel et réside dans une région de mémoire de tas Java, il est appelé « objet de bloc de pile ».

    Comment créer des threads virtuels ?

    Toutes les API qui fonctionnent avec les threads de plate-forme actuels fonctionneront avec les threads virtuels comme si. Cependant, les API pour créer des threads virtuels Java sont légèrement différentes. Vous trouverez ci-dessous un exemple de programme qui crée un thread virtuel Java :

    1:  
    2: Runnable task = () -> { System.out.println("Hello Virtual Thread!"); }; 
    3: 
    4: Thread.startVirtualThread(task);

    Dans cet exemple de programme, le thread virtuel est créé à l’aide de ‘Thread.startVirtualThread()’ API. C’est l’API la plus simple pour créer des threads virtuels Java. Si vous remarquez, dans le programme ci-dessus à la ligne 4, nous invoquons Thread.startVirtualThread() méthode en passant un objet Runnable comme argument, qui est créé à la ligne #2.

    Vous pouvez également créer des threads virtuels Java à l’aide des API suivantes :

    1. Thread.ofVirtual().start(Runnable);
    2. Thread.ofVirtual().unstarted(Runnable);
    3. Executors.newVirtualThreadPerTaskExecutor();
    4. Executors.newThreadPerTaskExecutor(ThreadFactory);
    5. Plus de détails sur ces API peuvent être trouvés dans cet article.

    Avantages des threads virtuels Java

    En raison de son architecture élégante, les threads virtuels offrent plusieurs avantages :

    1. Améliore la disponibilité des applications
    2. Améliore le débit des applications
    3. Réduit OutOfMemoryError: unable to create new native thread
    4. Réduit la consommation de mémoire des applications
    5. Améliore la qualité du code
    6. 100 % compatible avec les fils de plate-forme
    7. Pour en savoir plus sur ces avantages en détail, vous pouvez lire cet article.

    Quel est l’impact des threads virtuels sur les performances ?

    Les threads virtuels Java sont beaucoup plus légers que les threads de plate-forme. Pour en savoir plus sur l’impact sur les performances des threads virtuels Java, vous pouvez vous référer aux études réalisées ici. Cependant, en quelques mots :

    1. Si votre application a beaucoup de threads ou une grande taille de pile (c’est-à-dire -Xss), le passage aux threads virtuels réduira la consommation de mémoire de votre application.
    2. Si votre application crée fréquemment de nouveaux threads (au lieu d’exploiter le pool de threads), le passage aux threads virtuels peut améliorer le temps de réponse de votre application.

    Conclusion

    Nous espérons que cet article vous a aidé à mieux comprendre les threads virtuels Java – un merveilleux ajout à notre langage de programmation Java phénoménal.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.