public class PriorityChannel extends Object
Modifier and Type | Field and Description |
---|---|
private int |
_capacityPerPriorityClass |
private int |
_count |
private int |
_numberOfPriorityClasses |
private LinkedList[] |
_queues |
Constructor and Description |
---|
PriorityChannel(int numberOfPriorityClasses,
int capacityPerPriorityClass)
Legt einen neuen Kommunikationskanal an.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Löscht alle im Kommunikationskanal vorhandenen Nachrichten.
|
boolean |
isEmpty()
Bestimmt, ob der Kommunikationskanal leer ist.
|
boolean |
offer(PriorizedObject item,
long timeout)
Überträgt eine Nachricht in den Kommunikationskanal.
|
PriorizedObject |
poll(long timeout)
Empfängt und entfernt eine Nachricht aus dem Kommunikationskanal.
|
void |
put(PriorizedObject item)
Überträgt eine Nachricht in den Kommunikationskanal.
|
PriorizedObject |
take()
Empfängt und entfernt eine Nachricht aus dem Kommunikationskanal.
|
private final int _numberOfPriorityClasses
private final int _capacityPerPriorityClass
private final LinkedList[] _queues
private int _count
public PriorityChannel(int numberOfPriorityClasses, int capacityPerPriorityClass)
numberOfPriorityClasses
- Anzahl der zu verwendenden Prioritätsklassen. Diese sind von 0
bis
numberOfPriorityClasses-1
durchnummeriert.capacityPerPriorityClass
- Maximale Anzahl der pro Prioritätsklasse im Kommunikationskanal gespeicherten
Objekte.public void put(PriorizedObject item) throws InterruptedException
item
- Objekt, das in den Kommunikationskanal übertragen werden soll.InterruptedException
- Wenn der Thread unterbrochen wurde, während auf freien Platz im Kommunikationskanal
gewartet wurde.public boolean offer(PriorizedObject item, long timeout) throws InterruptedException
item
- Objekt, das in den Kommunikationskanal übertragen werden soll.timeout
- Zeit in Millisekunden, für die bei vollem Kommunikationskanal maximal auf freien Platz gewartet
wird.InterruptedException
- Wenn der Thread unterbrochen wurde, während auf freien Platz im Kommunikationskanal
gewartet wurde.public PriorizedObject take() throws InterruptedException
InterruptedException
- Wenn der Thread unterbrochen wurde, während auf Nachrichten gewartet wurde.public PriorizedObject poll(long timeout) throws InterruptedException
timeout
- Zeit in Millisekunden, für die bei leerem Kommunikationskanal auf neue Nachrichten gewartet wird.null
, wenn nach Ablauf des Timeouts immer noch keine Nachricht im
Kommunikationskanal vorhanden ist.InterruptedException
- Wenn der Thread unterbrochen wurde, während auf Nachrichten gewartet wurde.public boolean isEmpty()
true
bei leerem Kommunikationskanal, sonst false
.public void clear()