Queue zyklisch auslesen

javarian

Mitglied
Hi

ich hab eine queue
Java:
public static Queue<byte[]> queue = new LinkedList<byte[]>();

diese liegt in einer eigenen Klasse und Thread und soll falls ich was hineinschrieben eine Funktion aufrufen die diesen neuen Wert an die Funktion übergibt.

Habe im Moment mit einer schleife die auf is.Empty prüft und den lass den Thread für eine Sekunde schlafen.
Ich würde es aber gerne so lösen das es ohne die warte Zeit auskommt. Das direkt wenn ein neues Zeichen in der queue ist die Funktion aufruft.

Weis nur nicht ganz wie, muss ich da mutex oder so implementieren?

Hat jemand eine idee und am besten ein einfaches Beispiel wie ich das löse?

Grüße
 
@Scheeda Habe es mir mal angeschaut vielen Dank dafür aber suche erst mal einen einfacheren Weg.

@Dompteur Habe es jetzt mal umgesetzt nur das Problem ist das ich eine illegalmonitorstateexception bekomme.

Zur Erklärung:
Habe zwei Klassen eine Queue Klasse, welche die Queue beinhaltet, die instantierung der condition und dem lock. In welcher das lesen aus der queue gelockt wird.

Und eine Klasse die über das statische Lock in der ersten Klasse, den Threat der ersten Klasse frei geben soll und damit aus der Queue lesen soll.

Ich denke das Problem ist das es in zwei verschiedenen Klassen aufgeteilt ist oder? Ne Idee?

Grüße
 
Häufig liegt die Ursache für illegalmonitorstateexception darin, dass du dich nicht in einem synchronizierten Codestück befindest. Eigentlich sollte bei der Ausgabe des Stacktraces noch ein erklärender Text dabei stehen.
Ansonsten poste einmal dein Beispiel.
 

Zurück
Oben