{"product_id":"138578","title":"Les bases des coroutines Kotlin ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPCfFA4X4OhpyBkSmgzWCgPs2WHV.png?v=1765064711\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Les bases des coroutines Kotlin \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/125014350\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e Ce livre est écrit de manière à ce que chacun puisse facilement comprendre la programmation asynchrone, que de nombreux développeurs trouvent difficile, grâce à divers supports visuels et explications.\u003cbr\u003e Ce livre est recommandé aux développeurs utilisant Kotlin, notamment Android et Spring, qui souhaitent apprendre la programmation asynchrone à l'aide de coroutines, des bases aux niveaux avancés.\u003cbr\u003e\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e Vous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eChapitre 1 : Limites du travail basé sur les threads et émergence des coroutines\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 1.1. Processus et threads JVM\u003cbr\u003e 1.2.\u003cbr\u003e Limites de la programmation monothread et multithread\u003cbr\u003e 1.2.1.\u003cbr\u003e Limitations des applications monothread\u003cbr\u003e 1.2.2. \u003cbr\u003eSurmonter les limitations du monothreading grâce à la programmation multithread\u003cbr\u003e 1.3.\u003cbr\u003e Programmation multithread utilisant des threads et des pools de threads\u003cbr\u003e 1.3.1.\u003cbr\u003e Comment utiliser la classe Thread et ses limitations\u003cbr\u003e 1.3.2.\u003cbr\u003e Utilisation d'un pool de threads via le framework Executor\u003cbr\u003e 1.3.3.\u003cbr\u003e La programmation multithread et ses limitations\u003cbr\u003e 1.4.\u003cbr\u003e Limites de la programmation multithread traditionnelle et des coroutines\u003cbr\u003e 1.4.1.\u003cbr\u003e Limitations de la programmation multithread existante\u003cbr\u003e 1.4.2.\u003cbr\u003e Comment les coroutines surmontent-elles les problèmes de blocage des threads ?\u003cbr\u003e 1.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 2 : Mise en place d’un environnement de développement de coroutines\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 2.1.\u003cbr\u003e Installation et exploration d'IntelliJ IDEA\u003cbr\u003e 2.1.1.\u003cbr\u003e Installation d'IntelliJ IDEA 58\u003cbr\u003e 2.2.\u003cbr\u003e Créez un projet Kotlin et explorez sa mise en page.\u003cbr\u003e 2.2.1.\u003cbr\u003e Créer un projet\u003cbr\u003e 2.2.2. Examen de la configuration de l'IDE\u003cbr\u003e 2.3.\u003cbr\u003e Exécution de votre première coroutine\u003cbr\u003e 2.3.1.\u003cbr\u003e Ajout de la bibliothèque de coroutines\u003cbr\u003e 2.3.2.\u003cbr\u003e Exécution de votre première coroutine\u003cbr\u003e 2.4.\u003cbr\u003e Configuration d'un environnement de débogage de coroutines\u003cbr\u003e 2.4.1.\u003cbr\u003e Imprimer les threads en cours d'exécution\u003cbr\u003e 2.4.2. \u003cbr\u003eAfficher le nom de la coroutine en cours d'exécution\u003cbr\u003e 2.4.3.\u003cbr\u003e Utilisation de launch pour exécuter des coroutines supplémentaires\u003cbr\u003e 2.4.4.\u003cbr\u003e Ajouter un nom à une coroutine à l'aide de CoroutineName\u003cbr\u003e 2.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 3 CoroutineDispatcher\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 3.1.\u003cbr\u003e Qu'est-ce que CoroutineDispatcher ?\u003cbr\u003e 3.1.1.\u003cbr\u003e Analyse du comportement de CoroutineDispatcher\u003cbr\u003e 3.1.2.\u003cbr\u003e Le rôle de CoroutineDispatcher\u003cbr\u003e 3.2.\u003cbr\u003e Répartiteurs limités et illimités\u003cbr\u003e 3.3.\u003cbr\u003e Création d'un répartiteur restreint\u003cbr\u003e 3.3.1.\u003cbr\u003e Création d'un répartiteur monothread\u003cbr\u003e 3.3.2.\u003cbr\u003e Création d'un répartiteur multithread\u003cbr\u003e 3.4.\u003cbr\u003e Exécution d'une coroutine à l'aide de CoroutineDispatcher\u003cbr\u003e 3.4.1.\u003cbr\u003e Utilisation de CoroutineDispatcher comme paramètre de lancement\u003cbr\u003e 3.4.2.\u003cbr\u003e Exécution d'une coroutine enfant à l'aide du CoroutineDispatcher de la coroutine parente\u003cbr\u003e 3.5.\u003cbr\u003e Dispatcher de coroutines prédéfini\u003cbr\u003e 3.5.1.\u003cbr\u003e Dispatchers.IO\u003cbr\u003e 3.5.2.\u003cbr\u003e Dispatchers.Default\u003cbr\u003e 3.5.3.\u003cbr\u003e Limiter l'utilisation des threads Dispatchers.Default à l'aide de limitedParallelism\u003cbr\u003e 3.5.4.\u003cbr\u003e Dispatchers.IO et Dispatchers.Default4 utilisent un pool de threads partagé.\u003cbr\u003e 3.5.5.\u003cbr\u003e Répartiteurs.Principal\u003cbr\u003e 3.6.\u003cbr\u003e addition\u003cbr\u003e \u003cbr\u003e\u003cb\u003eChapitre 4 : Constructeurs de coroutines et tâches\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 4.1.\u003cbr\u003e Traitement séquentiel des coroutines à l'aide de la jointure\u003cbr\u003e 4.1.1.\u003cbr\u003e Problèmes survenant lorsque le traitement séquentiel est impossible\u003cbr\u003e 4.1.2.\u003cbr\u003e Traitement séquentiel utilisant la fonction de jointure\u003cbr\u003e 4.2.\u003cbr\u003e Traitement séquentiel des coroutines à l'aide de joinAll\u003cbr\u003e 4.2.1.\u003cbr\u003e fonction joinAll\u003cbr\u003e 4.2.2.\u003cbr\u003e Essayez d'utiliser la fonction joinAll\u003cbr\u003e 4.3.\u003cbr\u003e Démarrage tardif d'une coroutine avec CoroutineStart.LAZY\u003cbr\u003e 4.3.1.\u003cbr\u003e Préparation à l'examen d'un démarrage retardé\u003cbr\u003e 4.3.2.\u003cbr\u003e Démarrage tardif d'une coroutine avec CoroutineStart.LAZY\u003cbr\u003e 4.4.\u003cbr\u003e Annulation d'une coroutine\u003cbr\u003e 4.4.1.\u003cbr\u003e Annuler une tâche en utilisant Annuler\u003cbr\u003e 4.4.2.\u003cbr\u003e Traitement séquentiel utilisant cancelAndJoin\u003cbr\u003e 4.5.\u003cbr\u003e Confirmation de l'annulation de la coroutine\u003cbr\u003e 4.5.1.\u003cbr\u003e Confirmation d'annulation avec délai\u003cbr\u003e 4.5.2.\u003cbr\u003e Confirmation d'annulation utilisant yield\u003cbr\u003e 4.5.3.\u003cbr\u003e Vérification de l'annulation à l'aide de CoroutineScope.isActive\u003cbr\u003e 4.6.\u003cbr\u003e Variables d'état de coroutine et d'état de tâche\u003cbr\u003e 4.6.1.\u003cbr\u003e Créez une fonction qui affiche l'état d'une tâche\u003cbr\u003e 4.6.2.\u003cbr\u003e Coroutine en état de création\u003cbr\u003e 4.6.3.\u003cbr\u003e Coroutine en état d'exécution\u003cbr\u003e 4.6.4.\u003cbr\u003e La coroutine est en cours d'exécution.\u003cbr\u003e 4.6.5.\u003cbr\u003e Annulation de la coroutine\u003cbr\u003e 4.6.6.\u003cbr\u003e Coroutine annulée\u003cbr\u003e 4.6.7. \u003cbr\u003eRésumé de l'état\u003cbr\u003e 4.7.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 5 Asynchrone et différé\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 5.1.\u003cbr\u003e Réception du résultat via asynchrone\u003cbr\u003e 5.1.1.\u003cbr\u003e Création d'un objet Deferred à l'aide de l'asynchrone\u003cbr\u003e 5.1.2.\u003cbr\u003e Réception des valeurs de résultat à l'aide de await\u003cbr\u003e 5.2.\u003cbr\u003e Le travail différé est un type d'emploi particulier.\u003cbr\u003e 5.3.\u003cbr\u003e Réception des résultats de plusieurs coroutines\u003cbr\u003e 5.3.1.\u003cbr\u003e Réception des résultats de plusieurs coroutines à l'aide de await\u003cbr\u003e 5.3.2.\u003cbr\u003e Réception du résultat avec awaitAll\u003cbr\u003e 5.3.3.\u003cbr\u003e Utilisation de awaitAll sur les collections\u003cbr\u003e 5.4.\u003cbr\u003e avecContexte\u003cbr\u003e 5.4.1.\u003cbr\u003e Remplacer async-await par withContext\u003cbr\u003e 5.4.2.\u003cbr\u003e Comment fonctionne withContext\u003cbr\u003e 5.4.3.\u003cbr\u003e Précautions à prendre lors de l'utilisation de withContext\u003cbr\u003e 5.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 6 Contexte de coroutine\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 6.1.\u003cbr\u003e Composants du contexte de coroutine\u003cbr\u003e 6.2.\u003cbr\u003e Configuration du contexte de coroutine\u003cbr\u003e 6.2.1.\u003cbr\u003e Comment CoroutineContext gère les composants\u003cbr\u003e 6.2.2.\u003cbr\u003e Configuration du contexte de coroutine\u003cbr\u003e 6.2.3.\u003cbr\u003e Remplacement du composant CoroutineContext\u003cbr\u003e 6.2.4.\u003cbr\u003e Combinaison de contextes de coroutine avec plusieurs composants\u003cbr\u003e 6.2.5.\u003cbr\u003e Créez une tâche et ajoutez-la au contexte de coroutine\u003cbr\u003e 6.3.\u003cbr\u003e Accéder au composant CoroutineContext\u003cbr\u003e 6.3.1. \u003cbr\u003eClés du composant CoroutineContext\u003cbr\u003e 6.3.2.\u003cbr\u003e Accéder aux composants CoroutineContext à l'aide de clés\u003cbr\u003e 6.4.\u003cbr\u003e Suppression du composant CoroutineContext\u003cbr\u003e 6.4.1.\u003cbr\u003e Suppression d'éléments à l'aide de la clé moins\u003cbr\u003e 6.4.2.\u003cbr\u003e Points à noter lors de l'utilisation de la fonction moins\u003cbr\u003e 6.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 7 Concurrence structurée\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 7.1.\u003cbr\u003e héritage de l'environnement d'exécution\u003cbr\u003e 7.1.1.\u003cbr\u003e Héritage de l'environnement d'exécution de la coroutine parente\u003cbr\u003e 7.1.2.\u003cbr\u003e Écraser l'environnement d'exécution\u003cbr\u003e 7.1.3.\u003cbr\u003e Emploi non hérité\u003cbr\u003e 7.1.4.\u003cbr\u003e Emploi utilisé pour la structuration\u003cbr\u003e 7.2.\u003cbr\u003e Structuration et contrôle des tâches des coroutines\u003cbr\u003e 7.2.1.\u003cbr\u003e Propagation de l'annulation\u003cbr\u003e 7.2.2.\u003cbr\u003e Dépendance de la complétion d'une coroutine parente vis-à-vis de sa coroutine enfant\u003cbr\u003e 7.3.\u003cbr\u003e Gestion des coroutines à l'aide de CoroutineScope\u003cbr\u003e 7.3.1.\u003cbr\u003e Création d'un CoroutineScope\u003cbr\u003e 7.3.2.\u003cbr\u003e CoroutineScope, qui fournit un environnement d'exécution pour les coroutines.\u003cbr\u003e 7.3.3.\u003cbr\u003e La portée d'une coroutine appartenant à CoroutineScope\u003cbr\u003e 7.3.4.\u003cbr\u003e Annulation de CoroutineScope\u003cbr\u003e 7.3.5.\u003cbr\u003e Vérification de l'état d'activation de CoroutineScope\u003cbr\u003e 7.4.\u003cbr\u003e Structuration et emploi\u003cbr\u003e 7.4.1.\u003cbr\u003e runBlocking et la tâche racine\u003cbr\u003e 7.4.2.\u003cbr\u003e Briser la structure de l'emploi\u003cbr\u003e 7.4.3. \u003cbr\u003eUtiliser des tâches pour empêcher l'annulation de certaines coroutines seulement\u003cbr\u003e 7.4.4.\u003cbr\u003e Définissez explicitement le parent de la tâche créée.\u003cbr\u003e 7.4.5.\u003cbr\u003e La tâche créée ne s'exécute pas automatiquement.\u003cbr\u003e 7.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 8 Gestion des exceptions\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 8.1.\u003cbr\u003e Propagation des exceptions dans les coroutines\u003cbr\u003e 8.1.1.\u003cbr\u003e Comment les exceptions se propagent dans les coroutines\u003cbr\u003e 8.1.2.\u003cbr\u003e Propagation des exceptions à travers des exemples\u003cbr\u003e 8.2.\u003cbr\u003e Restrictions de propagation des exceptions\u003cbr\u003e 8.2.1.\u003cbr\u003e Limiter la propagation des exceptions à l'aide d'objets Job\u003cbr\u003e 8.2.2.\u003cbr\u003e Limitation de la propagation des exceptions à l'aide de l'objet SupervisorJob\u003cbr\u003e 8.2.3.\u003cbr\u003e Limitation de la propagation des exceptions à l'aide de supervisorScope\u003cbr\u003e 8.3.\u003cbr\u003e Gestion des exceptions à l'aide de CoroutineExceptionHandler\u003cbr\u003e 8.3.1.\u003cbr\u003e Créer un gestionnaire d'exceptions de coroutine\u003cbr\u003e 8.3.2.\u003cbr\u003e Utiliser CoroutineExceptionHandler\u003cbr\u003e 8.3.3.\u003cbr\u003e CoroutineExceptionHandler, qui ne gère que les exceptions non gérées\u003cbr\u003e 8.3.4.\u003cbr\u003e Faites en sorte que CoroutineExceptionHandler gère les exceptions\u003cbr\u003e 8.3.5.\u003cbr\u003e CoroutineExceptionHandler ne limite pas la propagation des exceptions.\u003cbr\u003e 8.4.\u003cbr\u003e Gestion des exceptions à l'aide d'instructions try-catch\u003cbr\u003e 8.4.1.\u003cbr\u003e Gestion des exceptions de coroutine à l'aide d'instructions try-catch\u003cbr\u003e 8.4.2. \u003cbr\u003eL'instruction try-catch de la fonction de construction de la coroutine ne capture pas les exceptions de la coroutine.\u003cbr\u003e 8.5.\u003cbr\u003e gestion des exceptions asynchrones\u003cbr\u003e 8.5.1.\u003cbr\u003e exposition d'exception asynchrone\u003cbr\u003e 8.5.2.\u003cbr\u003e propagation asynchrone des exceptions\u003cbr\u003e 8.6.\u003cbr\u003e Exceptions non propagées\u003cbr\u003e 8.6.1.\u003cbr\u003e Exception d'annulation non propagée\u003cbr\u003e 8.6.2.\u003cbr\u003e L'exception JobCancellationException est utilisée lors de l'annulation d'une coroutine.\u003cbr\u003e 8.6.3.\u003cbr\u003e Limiter le temps d'exécution d'une coroutine à l'aide de withTimeOut\u003cbr\u003e 8.7.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 9 Fonctions de suspension\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 9.1.\u003cbr\u003e Suspension des fonctions et des coroutines\u003cbr\u003e 9.1.1.\u003cbr\u003e Qu'est-ce qu'une fonction de suspension ?\u003cbr\u003e 9.1.2.\u003cbr\u003e Les fonctions suspendues ne sont pas des coroutines.\u003cbr\u003e 9.1.3.\u003cbr\u003e Exécution d'une fonction de suspension dans une coroutine séparée\u003cbr\u003e 9.2.\u003cbr\u003e Utilisation de la fonction de suspension\u003cbr\u003e 9.2.1.\u003cbr\u003e Points d'appel de la fonction de suspension\u003cbr\u003e 9.2.2.\u003cbr\u003e Exécution d'une coroutine à partir d'une fonction suspendue\u003cbr\u003e 9.3.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 10 : Comprendre les coroutines\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 10.1.\u003cbr\u003e Sous-programmes et coroutines\u003cbr\u003e 10.1.1.\u003cbr\u003e Routines et sous-routines\u003cbr\u003e 10.1.2.\u003cbr\u003e Différence entre les sous-routines et les coroutines\u003cbr\u003e 10.2.\u003cbr\u003e Gestion des threads dans les coroutines\u003cbr\u003e 10.2.1. \u003cbr\u003eComprendre le passage d'un thread à travers la fonction de suspension différée\u003cbr\u003e 10.2.2.\u003cbr\u003e Apprenez-en davantage sur la manière de rejoindre et d'attendre.\u003cbr\u003e 10.2.3.\u003cbr\u003e Appelez la fonction yield pour libérer le thread.\u003cbr\u003e 10.3.\u003cbr\u003e thread d'exécution de coroutine\u003cbr\u003e 10.3.1.\u003cbr\u003e Le fil d'exécution d'une coroutine n'est pas fixe.\u003cbr\u003e 10.3.2.\u003cbr\u003e Si vous ne cédez pas le thread, le thread d'exécution ne changera pas.\u003cbr\u003e 10.4.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 11 : Les coroutines en détail\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 11.1.\u003cbr\u003e Problèmes liés aux coroutines utilisant un état partagé et la synchronisation des données\u003cbr\u003e 11.1.1.\u003cbr\u003e Problèmes liés à l'utilisation de variables mutables\u003cbr\u003e 11.1.2. Comment l'espace mémoire de la JVM est connecté à la structure de mémoire matérielle.\u003cbr\u003e 11.1.3.\u003cbr\u003e Problèmes de visibilité de la mémoire et solutions pour l'état partagé\u003cbr\u003e 11.1.4.\u003cbr\u003e Problèmes et solutions de concurrence pour les états partagés\u003cbr\u003e 11.2.\u003cbr\u003e Explorez les différentes options de CoroutineStart\u003cbr\u003e 11.2.1.\u003cbr\u003e CoroutineStart.DEFAULT\u003cbr\u003e 11.2.2.\u003cbr\u003e CoroutineStart.ATOMIQUE\u003cbr\u003e 11.2.3.\u003cbr\u003e CoroutineStart.UNDISPATCHED\u003cbr\u003e 11.3.\u003cbr\u003e répartiteur illimité\u003cbr\u003e 11.3.1.\u003cbr\u003e Qu'est-ce qu'Unlimited Dispatcher ?\u003cbr\u003e 11.3.2.\u003cbr\u003e Fonctionnalités illimitées du répartiteur\u003cbr\u003e 11.4. \u003cbr\u003eFonctionnement et continuation des coroutines\u003cbr\u003e 11.4.1.\u003cbr\u003e Style de passage de continuation\u003cbr\u003e 11.4.2.\u003cbr\u003e Comprendre la continuité par la suspension et la reprise des coroutines\u003cbr\u003e 11.4.3.\u003cbr\u003e Reprise d'une coroutine après réception des résultats d'une autre tâche\u003cbr\u003e 11.5.\u003cbr\u003e addition\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 12 Tests unitaires des coroutines\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 12.1.\u003cbr\u003e Principes de base des tests unitaires\u003cbr\u003e 12.1.1.\u003cbr\u003e Qu'est-ce qu'un test unitaire ?\u003cbr\u003e 12.1.2.\u003cbr\u003e Mise en place d'un environnement de test\u003cbr\u003e 12.1.3.\u003cbr\u003e Création et exécution d'un test simple\u003cbr\u003e 12.1.4.\u003cbr\u003e Configuration d'un environnement de test à l'aide de l'annotation @BeforeEach\u003cbr\u003e 12.1.5.\u003cbr\u003e Tester les objets dépendants à l'aide de doubles de test\u003cbr\u003e 12.2.\u003cbr\u003e Premiers pas avec les tests unitaires de coroutines\u003cbr\u003e 12.2.1.\u003cbr\u003e Rédiger votre premier test de coroutine\u003cbr\u003e 12.2.2.\u003cbr\u003e Limites des tests utilisant runBlocking\u003cbr\u003e 12.3.\u003cbr\u003e bibliothèque de test de coroutines\u003cbr\u003e 12.3.1.\u003cbr\u003e Configuration des dépendances de la bibliothèque de tests de coroutines\u003cbr\u003e 12.3.2.\u003cbr\u003e Exécution des tests en temps virtuel à l'aide de TestCoroutineScheduler\u003cbr\u003e 12.3.3.\u003cbr\u003e Répartiteur de tests standard avec planificateur de coroutines de test\u003cbr\u003e 12.3.4. \u003cbr\u003eExécution de tests en temps virtuel avec TestScope\u003cbr\u003e 12.3.5.\u003cbr\u003e Création de tests à l'aide de runTest\u003cbr\u003e 12.4.\u003cbr\u003e Création d'un test unitaire de coroutine\u003cbr\u003e 12.4.1.\u003cbr\u003e Préparation du code pour les tests unitaires de coroutines\u003cbr\u003e 12.4.2.\u003cbr\u003e Rédaction de tests pour la classe FollowerSearcher\u003cbr\u003e 12,5.\u003cbr\u003e Approfondissement des tests de coroutines\u003cbr\u003e 12.5.1.\u003cbr\u003e Tests sur les objets qui exécutent de nouvelles coroutines à l'intérieur des fonctions\u003cbr\u003e 12.5.2.\u003cbr\u003e Création de tests à l'aide de backgroundScope\u003cbr\u003e 12.6.\u003cbr\u003e addition\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eImage détaillée\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4758\/MidCate001\/475705202.jpg\" border=\"0\" alt=\"Image détaillée 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eCe que ce livre couvre\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e - Il explique la programmation asynchrone à l'aide de coroutines, de sorte que même les développeurs débutants puissent facilement la comprendre grâce à de riches supports visuels.\u003cbr\u003e - Explique les limites de la programmation multithread avant l'apparition des coroutines et comment ces dernières permettent de surmonter ces limitations.\u003cbr\u003e - Explique comment utiliser les différents composants qui constituent CoroutineContext. \u003cbr\u003e- Découvrez les méthodes de concurrence structurée et de gestion des exceptions des coroutines et expliquez comment stabiliser la programmation asynchrone.\u003cbr\u003e - Fournit des ressources pour une compréhension approfondie du fonctionnement des coroutines.\u003cbr\u003e - Explique, du niveau débutant au niveau avancé, comment écrire des tests unitaires de coroutines.\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePublic cible de ce livre\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e - Les développeurs qui souhaitent acquérir de solides connaissances sur les coroutines Kotlin, des bases jusqu'au cœur du sujet.\u003cbr\u003e - Les développeurs qui souhaitent progresser techniquement en comprenant en profondeur les différentes fonctions des coroutines.\u003cbr\u003e - Les développeurs qui souhaitent apprendre à rendre la programmation asynchrone plus stable en comprenant la concurrence structurée et la gestion des exceptions des coroutines.\u003cbr\u003e - Les développeurs qui souhaitent comprendre le fonctionnement des coroutines\u003cbr\u003e - Les développeurs qui souhaitent apprendre à écrire des tests unitaires de coroutines\u003cbr\u003e\u003cbr\u003e \u003cb\u003eStructure de ce livre\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Le chapitre 1 traite des processus et des threads dans la JVM. \u003cbr\u003eNous allons explorer comment la programmation multithread traditionnelle a évolué et comment les coroutines surmontent les limitations de cette programmation.\u003cbr\u003e Le chapitre 2 explique comment configurer un environnement de développement de coroutines à l'aide d'IntelliJ IDEA.\u003cbr\u003e Après avoir configuré l'environnement de développement, nous exécuterons notre première coroutine et apprendrons à déterminer sur quel thread elle s'exécute.\u003cbr\u003e Le chapitre 3 traite de CoroutineDispatcher.\u003cbr\u003e Explique comment créer un répartiteur délimité et comment exécuter une coroutine à l'aide de ce répartiteur.\u003cbr\u003e La bibliothèque de coroutines fournit des CoroutineDispatchers prédéfinis pour votre commodité ; examinons donc les types de CoroutineDispatchers prédéfinis disponibles et quand les utiliser.\u003cbr\u003e Le chapitre 4 traite de la fonction de création de coroutine launch et de l'objet Job renvoyé lors de l'appel à launch. \u003cbr\u003eÉtant donné que les coroutines peuvent être suspendues, le traitement séquentiel entre les tâches est très important.\u003cbr\u003e Nous apprendrons comment utiliser la fonction join de l'objet Job pour traiter séquentiellement les coroutines, et comment manipuler l'état des coroutines et vérifier la valeur de l'état via l'objet Job.\u003cbr\u003e\u003cbr\u003e Le chapitre 5 explique les constructeurs de coroutines asynchrones.\u003cbr\u003e Nous apprendrons à utiliser async et await pour renvoyer des valeurs depuis les coroutines, et à utiliser withContext pour changer le thread sur lequel une coroutine s'exécute.\u003cbr\u003e Au chapitre 6, nous allons découvrir CoroutineContext.\u003cbr\u003e Comprenez que Job, CoroutineDispatcher et CoroutineName sont des composants de CoroutineContext, et voyez comment combiner ou séparer les composants de CoroutineContext.\u003cbr\u003e Le chapitre 7 explore comment la concurrence structurée est utilisée pour utiliser les coroutines en toute sécurité, en se concentrant sur la relation entre les coroutines parentes et enfants. \u003cbr\u003eEnsuite, nous étudierons CoroutineScope, qui joue un rôle important dans la structuration, et nous verrons que Job est au centre de cette structuration.\u003cbr\u003e Le chapitre 8 traite de la gestion des exceptions.\u003cbr\u003e Nous verrons comment les exceptions se propagent lorsqu'elles surviennent dans une coroutine et nous confirmerons que cette propagation est due à la concurrence structurée.\u003cbr\u003e Nous verrons également comment utiliser supervisorScope ou SupervisorJob pour limiter la portée de la propagation des exceptions.\u003cbr\u003e De plus, il explique comment gérer les exceptions propagées à l'aide d'instructions try-catch ou de Coroutine ExceptionHandler.\u003cbr\u003e\u003cbr\u003e Le chapitre 9 traite des fonctions de suspension.\u003cbr\u003e Comprenez que les fonctions suspendues sont des blocs de code réutilisables et apprenez à quoi faire attention lorsque vous les utilisez. \u003cbr\u003eEnsuite, nous verrons où nous pouvons appeler une fonction suspendue, comment créer un CoroutineScope à l'intérieur d'une fonction suspendue sans en perturber la structure, et comment exécuter une nouvelle coroutine enfant.\u003cbr\u003e Le chapitre 10 s'appuie sur les chapitres précédents en abordant des sujets qui approfondissent votre compréhension des coroutines.\u003cbr\u003e Nous allons explorer la différence entre les sous-routines et les coroutines, pourquoi la cession de threads est importante pour que les coroutines fonctionnent de manière coopérative, et ce qui se passe lorsqu'une coroutine est suspendue puis reprise.\u003cbr\u003e Le chapitre 11 explore des sujets avancés concernant les coroutines.\u003cbr\u003e Cet article explique les problèmes de synchronisation des données lorsqu'il existe plusieurs coroutines utilisant un état partagé dans un environnement multithread, comment modifier la méthode d'exécution d'une coroutine à l'aide de l'option CoroutineStart, comment fonctionne le répartiteur non limité et comment se produisent la suspension et la reprise des coroutines. \u003cbr\u003eLe chapitre 12 traite des tests unitaires des coroutines.\u003cbr\u003e Apprenez à utiliser la bibliothèque de tests de coroutines et à réaliser au mieux des tests unitaires de coroutines.\u003cbr\u003e\u003cbr\u003e \u003cb\u003eNote de l'auteur\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Lors de la création de programmes, les développeurs rencontrent de nombreuses situations qui nécessitent une programmation asynchrone.\u003cbr\u003e Au cours de ce processus, vous surmonterez de nombreuses difficultés et trouverez des solutions à chaque situation, vous progresserez et vous vous familiariserez avec la programmation asynchrone.\u003cbr\u003e La programmation asynchrone est essentielle pour créer des programmes performants ; comprendre la programmation asynchrone est donc essentiel pour devenir un développeur compétent.\u003cbr\u003e Cependant, il existe peu de ressources pédagogiques sur la programmation asynchrone.\u003cbr\u003e De plus, la plupart de ces supports pédagogiques sont conçus pour des développeurs ayant un certain niveau de compétence, ce qui les rend difficiles à comprendre pour les développeurs débutants. \u003cbr\u003eLes coroutines Kotlin ne font pas exception.\u003cbr\u003e Les coroutines sont une solution asynchrone qui allie performance, sécurité et lisibilité, et il est clair qu'elles deviendront la norme en matière de programmation asynchrone en Kotlin pour longtemps.\u003cbr\u003e Par conséquent, de nombreux développeurs ont commencé à utiliser les coroutines dans leur travail, mais il existe encore un manque de ressources pédagogiques, et la plupart sont difficiles à comprendre, en particulier pour les développeurs débutants.\u003cbr\u003e\u003cbr\u003e J'ai essayé plusieurs choses pour rendre les coroutines plus accessibles aux développeurs.\u003cbr\u003e J'ai également compilé des livres, des conférences et des documents officiels en anglais dans une série sur mon blog technique, et j'ai traduit la documentation technique officielle de Coroutine en coréen et l'ai diffusée sur le web.\u003cbr\u003e Bien que ces tentatives aient été bien accueillies, la gestion systématique des coroutines présentait des limites.\u003cbr\u003e J'ai alors commencé à écrire en pensant que je pourrais présenter les coroutines de manière plus systématique à travers un livre. \u003cbr\u003eCe livre traitera des coroutines de manière systématique.\u003cbr\u003e Il aborde les caractéristiques de la programmation multithread traditionnelle, la manière dont les coroutines surmontent les limitations de cette programmation, les composants des coroutines et leur utilisation, etc.\u003cbr\u003e Ce livre vous aidera à comprendre non seulement comment utiliser les coroutines, mais aussi les problèmes qu'elles tentent de résoudre.\u003cbr\u003e Et je l'ai structuré de manière à ce que vous puissiez comprendre tout cela même si vous ne connaissez que le langage Kotlin.\u003cbr\u003e J'espère que ce livre aidera de nombreux développeurs à acquérir une compréhension plus approfondie des coroutines.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \"]\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e SPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate d'émission :\u003c\/strong\u003e 29 février 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 452 pages | 188 × 235 × 21 mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791161758251\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10 :\u003c\/strong\u003e 1161758259 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893259894826,"sku":"138578","price":44.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/16e08bfc71f9a5fd777e0d5aa6f0dadf.jpg?v=1765394454","url":"https:\/\/librairie.coreenne.fr\/products\/138578","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}