Files d'attente de tâches en Java pour débutants : un guide simple

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : qu'est-ce qu'une file d'attente de tâches en Java et pourquoi en a-t-on besoin



En programmation, il est souvent nécessaire de traiter les données dans l'ordre de leur arrivée. Imaginez une file d'attente à la caisse d'un supermarché : le premier arrivé est servi en premier. En Java, cette logique est implémentée par l'interface Queue et ses implémentations. Une file d'attente de tâches (Task Queue) est une structure de données qui fonctionne selon le principe FIFO (First In, First Out – « premier arrivé, premier sorti »).



Pourquoi en a-t-on besoin ? Les files d'attente sont indispensables pour :

  • Le traitement des requêtes sur un serveur (serveur web, API)
  • La mise en mémoire tampon des données avant l'écriture dans une base de données
  • L'implémentation d'un pool de threads (Thread Pool)
  • L'organisation de tâches asynchrones


Dans cet article, nous allons passer en revue les principales interfaces et classes pour travailler avec les files d'attente en Java, écrire des exemples simples et donner des conseils pratiques. Le contenu est destiné aux débutants, nous commencerons donc par les bases.



1. L'interface Queue et ses méthodes de base



En Java, l'interface java.util.Queue définit les opérations principales pour travailler avec une file d'attente. Les principales méthodes :



  • add(E e) — ajoute un élément à la fin de la file d'attente. Si la file d'attente est pleine, lève une exception.
  • offer(E e) — ajoute un élément. Contrairement à add(), retourne false en cas d'échec, et non une exception.
  • remove() — supprime et retourne le premier élément. Si la file d'attente est vide — exception NoSuchElementException.
  • poll() — supprime et retourne le premier élément, ou null si la file d'attente est vide.
  • element() — retourne le premier élément sans le supprimer. Lève une exception si la file d'attente est vide.
  • peek() — retourne le premier élément sans le supprimer, ou null.


L'implémentation la plus populaire de Queue est LinkedList. Elle est simple et convient à la plupart des tâches de base.



import java.util.LinkedList;import java.util.Queue;

public class QueueExample { public static void main(String[] args) { // Création d'une file d'attente de chaînes Queue<String> taskQueue = new LinkedList<>();

// Ajout de tâches (méthode offer) taskQueue.offer("Tâche 1 : Traiter la commande"); taskQueue.offer("Tâche 2 : Envoyer un email"); taskQueue.offer("Tâche 3 : Générer un rapport");

System.out.println("File d'attente des tâches : " + taskQueue);

// Traitement des tâches dans l'ordre while (!taskQueue.isEmpty()) { String task = taskQueue.poll(); // Prendre la première tâche System.out.println("Exécution en cours : " + task); // Ici, vous pouvez écrire la logique d'exécution }

System.out.println("Toutes les tâches sont terminées. La file d'attente est vide : " + taskQueue.isEmpty()); }}


Sortie du programme :

File d'attente des tâches : [Tâche 1 : Traiter la commande, Tâche 2 : Envoyer un email, Tâche 3 : Générer un rapport]Exécution en cours : Tâche 1 : Traiter la commandeExécution en cours : Tâche 2 : Envoyer un emailExécution en cours : Tâche 3 : Générer un rapportToutes les tâches sont terminées. La file d'attente est vide : true


2. Deque — file d'attente bidirectionnelle



L'interface Deque (Double Ended Queue) étend Queue et permet de travailler avec les deux extrémités de la file d'attente. Vous pouvez ajouter et supprimer des éléments à la fois au début et à la fin. Cela offre plus de flexibilité.



Méthodes supplémentaires principales :

  • addFirst() / offerFirst() — ajouter au début.
  • addLast() / offerLast() — ajouter à la fin (analogue à offer()).
  • removeFirst() / pollFirst() — supprimer du début.
  • removeLast() / pollLast() — supprimer de la fin.
  • getFirst() / peekFirst() — consulter le premier élément.

Blogs

Book Recommendations