Auf Einträge im Buffer warten

Status
Nicht offen für weitere Antworten.

mephi

Bekanntes Mitglied
Hi,

um Aufgenommenes oder live Gesprochenes zu verarbeiten, habe ich ein Thread der die Daten in eine LinkedBlockingQueue schreibt und ein anderer Thread verarbeitet alles was da drin ist nach und nach. Mein Problem besteht jetzt darin, wie ich das ganze sinnvoll stoppen kann. Bisher warte ich ich mit LinkedBlockingQueue.take() bis wieder Daten drinstehen, solang auch noch was nachkommt ist das kein Problem, nur wenn die Aufnahme zuende ist oder eben abgebrochen wird, bleibt take() im blockierenden Modus. Mir fällt auch grad nichts anderes ein wie ich es machen soll, bis die BlockingQueue wegzulassen und immer wenn der eine Thread Daten reinschreibt ein notify() zu machen.
Meint ihr das ist sinnvoll oder kennt ihr eine bessere Möglichkeit?
 

Schandro

Top Contributor
kenn mich mit LinkedBlockingQueue net aus, aber kannst du nicht am Schluss ein bestimmtes Element reinstellen das den anderen Thread sagt: "Übertragung zuende!"
 

mephi

Bekanntes Mitglied
mhm und welches? :) normal kommen da nur doubles bzw bytes rein, jenachdem wann ich dekodiere..

habs nun mal so probiert..
Code:
		while(!this.stopped) {
			try {
				if(this.doubleBuffer.size() > 0) {
					newValues = this.doubleBuffer.poll(100, TimeUnit.MILLISECONDS);
				} else {
					continue;
				}

aber ob das effektiv ist wird sich erst zeigen wenn ich soweit bin das live zu testen..
 

SilentJ

Bekanntes Mitglied
Du schiebst Element einer Klasse bzw. davon abgeleitete Klassen in die Queue.
In diesem Fall kannst Du doch in deiner Basisklasse ein public static final Object als Marker erzeugen, bei dem eine Property so gesetzt ist, dass dieses Objekt auf Seiten des Queue-Verarbeiters als Ende-Marker interpretiert wird.

Z.B. wenn Files verarbeitet werden sollen, könnte das Marker-Element durch new File("") repräsentiert werden, nur ein Vorschlag.

Michael
 

Schandro

Top Contributor
Das entkapsel die Bytes die du über die LinkedBlockingQueue bereitstellen willst in eine Klasse, die zusätzlich noch ein boolean enthalten kann der entscheidet obs das letzte Element war oder ob es weitergeht...
 

mephi

Bekanntes Mitglied
meinst du das ist effektiver als meine methode? ich sollte möglichst viel rechenzeit einsparen wenn es geht.

*edit*

oder ne einfache sync. list und notify() und bei ende einfach n flag setzen?
 
Zuletzt bearbeitet:

SilentJ

Bekanntes Mitglied
Naja leider sinds primitive Datentypen. double bzw byte

Funktioniert doch:

Code:
List<Number> numbers = new ArrayList<Number>();
byte b = 0x11;
numbers.add(b);
b = numbers.get(0).byteValue();

Mal aus dem Handgelenk. Eclipse akzeptiert den Code. Analog mit double-Werten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T INI - Einträge auslesen Allgemeine Java-Themen 6
L Dependency Injection für Baum-Einträge Allgemeine Java-Themen 9
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
B Suche passende Datenstruktur für 2 Einträge Allgemeine Java-Themen 19
B Collections TreeSet/TreeMap, doppelte Einträge zulassen ? Allgemeine Java-Themen 11
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
K JFreeChart - Einträge in DomainAxis anpassen Allgemeine Java-Themen 2
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2
D Startmenü Einträge erstellen Allgemeine Java-Themen 4
V Java-Objekt. wie groß maximal ? anzahl der einträge Allgemeine Java-Themen 4
G List- Einträge löschen Allgemeine Java-Themen 3
F Einzelne Einträge im Array als konstant festlegen Allgemeine Java-Themen 2
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
T Kontextmenü Einträge Allgemeine Java-Themen 2
F [TableModel] Doppelte einträge finden (bzw. verhindern) Allgemeine Java-Themen 3
L buffer overflow Allgemeine Java-Themen 7
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
K AES, Buffer und Bytes Allgemeine Java-Themen 2
P Buffer - Consumer Producer - Threads synchronisieren Allgemeine Java-Themen 15
P Sound Buffer prüfen Allgemeine Java-Themen 12
G Maximalgröße von byte[] buffer Allgemeine Java-Themen 7
N IOException: "Reading from an output buffer" ? Allgemeine Java-Themen 2
Icewind Buffer.... Allgemeine Java-Themen 7
D Buffer Overflow in Java möglich? Allgemeine Java-Themen 5
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
J Warten bis cmd Prozess fertig ist Allgemeine Java-Themen 2
M Warten vor OnClickListener Allgemeine Java-Themen 2
B Threads Multithreading Threads sollen warten Allgemeine Java-Themen 12
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
M Warten bis Variabel nicht null ist Allgemeine Java-Themen 18
chuxXo Warten auf BasicPlayer - JavaZOOM SoundAPI Allgemeine Java-Themen 8
J Java Auf anderes Programm warten Allgemeine Java-Themen 9
W Threads Threads warten lassen Allgemeine Java-Themen 5
D Simpler Timer zum warten Allgemeine Java-Themen 19
B Threads Main Thread warten auf abgebrochen Task warten lassen Allgemeine Java-Themen 25
das-mo Warten auf Event Allgemeine Java-Themen 7
L Im Thread auf Eingaben warten Allgemeine Java-Themen 3
frankred Threads Auf eine Gruppe von Threads warten Allgemeine Java-Themen 11
S Warten, bis ein Impuls von außen kommt. Allgemeine Java-Themen 2
A Warten auf shellscript Allgemeine Java-Themen 3
K Warten bis Datei geändert Allgemeine Java-Themen 2
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
KrokoDiehl Desktop.open() und warten? Allgemeine Java-Themen 3
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
H auf Methode warten Allgemeine Java-Themen 2
F thread warten lassen Allgemeine Java-Themen 2
N "Bitte warten"-Meldung Allgemeine Java-Themen 6
P Swing Eine Sekunde warten (Timer) Allgemeine Java-Themen 7
kodela Warten mit Java Allgemeine Java-Themen 5
L Warten bei mehreren Threads, bis Ende erreicht ist Allgemeine Java-Themen 2
S Threads eines Pools aufeinander warten lassen Allgemeine Java-Themen 11
J Main-Thread soll auf alleKinder Threads warten Allgemeine Java-Themen 5
MQue auf gestarteten Process warten Allgemeine Java-Themen 7
M In der GUI / im Model auf Webrequest warten? Allgemeine Java-Themen 4
G Auf den Start eines Threads warten? Allgemeine Java-Themen 4
M Auf Thread warten Allgemeine Java-Themen 5
G Warten? Allgemeine Java-Themen 3
R Warten auf Beendigung eines externen Prozesses Allgemeine Java-Themen 4
B Programm soll auf die Eingabe vom Mouselistener warten. Allgemeine Java-Themen 19
C Java Parameter zum starten ohne auf Programmende zu warten Allgemeine Java-Themen 4
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
P Warten auf ein Ereignis Allgemeine Java-Themen 7
R Thread beenden und warten, bis er fertig ist Allgemeine Java-Themen 4
K Warten auf die Eingabe aus Fenster.... Allgemeine Java-Themen 2
O Warten bis alle gestarteten Threads beendet sind? Allgemeine Java-Themen 6
Q Methode soll auf schließen eines Frames warten Allgemeine Java-Themen 4
S methode stoppen / auf ein event warten Allgemeine Java-Themen 5
J x Sekunden warten, dann Kommando ausführen Allgemeine Java-Themen 8
B Thread soll auf Event warten, dann Daten an Klasse senden Allgemeine Java-Themen 2
R Thread soll auf MouseClick warten Allgemeine Java-Themen 2
W Warten bis gestartetes Programm beendet wird Allgemeine Java-Themen 2
D Warten auf Dateien aus externem Programm Allgemeine Java-Themen 3
D commapi lesen, auf zeichen warten. Allgemeine Java-Themen 2
sliwalker Threads: Kann man auf anonyme Threads warten? Allgemeine Java-Themen 2
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
N auf java 1.5 (tiger) warten? Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben