Module 14: Concurrency and Multithreading
Mini-Project: Concurrent Download Manager
Implement a downloader that fetches files concurrently, supports pauses, and reports progress.
Use ExecutorService with a bounded thread pool to control concurrency.
Track progress per download using thread-safe data structures and scheduled tasks.
Handle cancellations, retries, and back-pressure when bandwidth limits are reached.