Gestionnaire de téléchargement multithread
Dans ce mini-projet, vous aurez à créer une application de gestion de téléchargements multithread. L'application lira une liste d'URLs à télécharger depuis un fichier JSON et les téléchargera de manière parallèle en utilisant un ExecutorService.
Description générale
Le gestionnaire de téléchargement est une application console capable de :
- Lire une configuration de téléchargements depuis un fichier JSON
- Télécharger plusieurs fichiers simultanément (maximum 2 téléchargements en parallèle)
- Gérer les erreurs de téléchargement de manière robuste
- Afficher un message de confirmation lorsque tous les téléchargements sont terminés
Structure du fichier JSON
Le fichier JSON de configuration doit contenir une liste de téléchargements. Chaque entrée spécifie l'URL à télécharger et le chemin du fichier de destination.
{
"telechargements": [
{
"url": "https://releases.ubuntu.com/24.04.4/ubuntu-24.04.4-desktop-amd64.iso",
"chemin": "iso/ubuntu-24.04.iso"
},
{
"url": "https://download.fedoraproject.org/pub/fedora/linux/releases/43/Workstation/x86_64/iso/Fedora-Workstation-Live-43-1.6.x86_64.iso",
"chemin": "iso/fedora-43.iso"
},
{
"url": "https://download.virtualbox.org/virtualbox/7.2.6/VirtualBox-7.2.6a-172322-Win.exe",
"chemin": "apps/virtualbox-7.2.6.exe"
},
{
"url": "https://vscode.download.prss.microsoft.com/dbazure/download/stable/41dd792b5e652393e7787322889ed5fdc58bd75b/VSCodeUserSetup-x64-1.115.0.exe",
"chemin": "apps/vscode-115.exe"
}
]
}
Fonctionnalités requises
ExecutorService avec pool de threads
L'application doit utiliser un ExecutorService avec un pool de threads limité à 2 téléchargements simultanés. Voici un exemple de configuration :
Tâches de téléchargement
Chaque téléchargement doit être encapsulé dans une classe Callable qui :
- Établit une connexion avec l'URL
- Enregistre le fichier sur le disque dur au chemin spécifié
- Gère les exceptions et les erreurs de réseau
Attendre la fin de tous les téléchargements
L'application doit attendre que tous les téléchargements soient terminés avant d'afficher le message de confirmation.
Message de confirmation
Une fois tous les téléchargements complétés, l'application affichera un message similaire à :
Exemple d'exécution
Lecture de la configuration... OK
Démarrage des téléchargements (max 2 en parallèle)...
[1/3] Téléchargement de file1.pdf...
[2/3] Téléchargement de file2.zip...
[1/3] Téléchargement de file1.pdf... COMPLÉTÉ
[3/3] Téléchargement de file3.jpg...
[2/3] Téléchargement de file2.zip... COMPLÉTÉ
[3/3] Téléchargement de file3.jpg... COMPLÉTÉ
Tous les téléchargements sont terminés !
3 fichier(s) téléchargé(s) avec succès.
Défis supplémentaires
- Calculer et afficher le temps total de téléchargement pour chaque fichier
- Permettre une limite configurable du nombre de téléchargements parallèles en utilisant un argument (
args[]de la fonctionmain())