|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.sys.funclib.concurrent.PriorityChannel
public class PriorityChannel
Diese Klasse implementiert einen größenbeschränkten Kommunikationskanal zum Datenaustausch zwischen Threads. Es stehen Funktionen zur Verfügung mit den Objekte in den Kommunikationskanal übertragen werden bzw. aus dem Kommunikationskanal ausgelesen werden. Wenn die gewünschte Funktion nicht durchgeführt werden kann, weil der Kanal voll bzw. leer ist, dann blockiert die Funktion, bis die Funktion erfolgreich durchgeführt wurde oder bis eine vorgegebene Zeit verstrichen ist. Der Kommunikationskanal ist priorisiert, d.h. es können Objekte verschiedener Prioritätsklassen ausgetauscht werden, wobei die Objekte mit der kleinsten Prioritätsklasse bevorzugt behandelt werden. Objekte der gleichen Prioritätsklasse werden in der Reihenfolge ausgelesen in der sie in den Kommunikationskanal übertragen wurden (im Gegensatz zu Heap basierten Implementierungen). Der Aufwand des Auslesens von Objekten ist proportional zur Anzahl verschiedener Prioritätsklassen.
Field Summary | |
---|---|
private int |
_capacityPerPriorityClass
|
private int |
_count
|
private int |
_numberOfPriorityClasses
|
private LinkedList[] |
_queues
|
Constructor Summary | |
---|---|
PriorityChannel(int numberOfPriorityClasses,
int capacityPerPriorityClass)
Legt einen neuen Kommunikationskanal an. |
Method Summary | |
---|---|
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final int _numberOfPriorityClasses
private final int _capacityPerPriorityClass
private final LinkedList[] _queues
private int _count
Constructor Detail |
---|
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.Method Detail |
---|
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()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |