---
title: 'Inselupdate: Blockierende Warteschlangen'
url: 'https://tutego.de/blog/javainsel/2011/03/inselupdate-blockierende-wartenschlangen'
markdown: 'https://tutego.de/blog/javainsel/2011/03/inselupdate-blockierende-wartenschlangen.md'
date: '2011-03-21'
description: 'Die Schnittstelle BlockingQueue steht für besondere Queues, die blockieren können. Das kann aus zwei Gründen geschehen: entweder sind keine Daten zu entnehmen da die Queue leer ist, oder eine maximale Anzahl von zu haltenden Elementen ist erreicht. Besonders in Produzenten/Konsumenten-Szenarien sin…'
taxonomy:
  category:
    - Allgemein
---

# Inselupdate: Blockierende Warteschlangen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselupdate: Blockierende Warteschlangen

21.03.2011 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Die Schnittstelle BlockingQueue steht für besondere Queues, die blockieren können. Das kann aus zwei Gründen geschehen: entweder sind keine Daten zu entnehmen da die Queue leer ist, oder eine maximale Anzahl von zu haltenden Elementen ist erreicht. Besonders in Produzenten/Konsumenten-Szenarien sind blockierende Warteschlangen sehr nützlich.

Eine performante thread-sichere Implementierung ist in der Praxis sehr wichtig und die Java SE Bibliothek hat zwei besondere Realisierungen auf Lager:

- ArrayBlockingQueue: Queue immer mit einer maximalen Kapazität, realisiert intern mit einem Feld
- LinkedBlockingQueue: Queue unbeschränkt oder mit maximaler Kapazität, intern realisiert durch eine verkettete Liste
- PriorityBlockingQueue: Eine blockierende PriorityQueue

Die anderen Realisierungen wie DelayQueue sind für uns jetzt nicht relevant.

Das schöne an blockierenden Warteschlangen ist ihr Verhalten in Produzenten/Konsumenten-Verhältnissen; ein `Thread` (oder beliebig viele Threads) setzt (viele setzen) Daten in die Queue, ein `Thread` (oder beliebig viele Threads) holt (viele Threads holen) die Daten wieder raus. Bei einer Queue ist es ja so, dass sie nach dem FIFO-Verfahren arbeitet, das heißt, die Daten, die zuerst reingelegt wurden, werden auch zuerst verarbeitet. Bei einer Prioritätswarteschlage ist das etwas anders, aber dazu gleich mehr.

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Projekt Coin Updates für die JLS](https://tutego.de/blog/javainsel/2011/03/projekt-coin-updates-fr-die-jls.md)
- Next: [JSR 334 (Project Coin) ist im Public Review](https://tutego.de/blog/javainsel/2011/03/jsr-334-project-coin-ist-im-public-review.md)
