Hallo zusammen,
Ich bin erst Anfänger auf dem Gebiet Threading / Multithreading und hätte da mal eine konkrete Frage, bei der ich momentan evtl. auch einfach auf dem Schlauch stehe.
Folgendes Problem:
Eine ConcurrentLinkedQueue erhält der Reihe nach einfache String-Objekte, die sowas, wie Commands darstellen. Wann / in welcher Geschwindigkeit die da reinkommen kann ich nicht beeinflussen. Diese Commands sollen jetzt nacheinander abgearbeitet werden (FIFO). Für jedes Command soll ein neuer Thread aufgemacht werden, in dem das Command abgearbeitet wird. Während so ein Thread läuft, soll die ConcurrentLinkedQueue zwar weitere Strings empfangen (bis zu einem Maximum), aber es soll kein weiteres Command abgearbeitet werden.
Ich gebe mal einen groben Auszug aus der Vorgabe:
Wie gesagt... Darauf, wie häufig die Funktion enqueueStringCommands aufgerufen wird, habe ich keinen Einfluss. Nach dem Hinzufügen in die Liste müsste ich jetzt den Code einfügen, der für den jeweils nächsten String einen Thread ablaufen lässt und nach dessen Ablaufen das nächste Kommando aus der Queue holt.
Wäre super, wenn mir da jemand auf die Sprünge helfen könnte
MfG,
-- tehK
Ich bin erst Anfänger auf dem Gebiet Threading / Multithreading und hätte da mal eine konkrete Frage, bei der ich momentan evtl. auch einfach auf dem Schlauch stehe.
Folgendes Problem:
Eine ConcurrentLinkedQueue erhält der Reihe nach einfache String-Objekte, die sowas, wie Commands darstellen. Wann / in welcher Geschwindigkeit die da reinkommen kann ich nicht beeinflussen. Diese Commands sollen jetzt nacheinander abgearbeitet werden (FIFO). Für jedes Command soll ein neuer Thread aufgemacht werden, in dem das Command abgearbeitet wird. Während so ein Thread läuft, soll die ConcurrentLinkedQueue zwar weitere Strings empfangen (bis zu einem Maximum), aber es soll kein weiteres Command abgearbeitet werden.
Ich gebe mal einen groben Auszug aus der Vorgabe:
Java:
public ConcurrentLinkedQueue<String> incomingMessageQueue = new ConcurrentLinkedQueue<String>();
public void enqueueStringCommands(final String tmp) {
if(incomingMessageQueue.size() <= INCOMING_MESSAGE_QUEUE_MAX) {
incomingMessageQueue.add(tmp);
}
//... insert code here
}
Wie gesagt... Darauf, wie häufig die Funktion enqueueStringCommands aufgerufen wird, habe ich keinen Einfluss. Nach dem Hinzufügen in die Liste müsste ich jetzt den Code einfügen, der für den jeweils nächsten String einen Thread ablaufen lässt und nach dessen Ablaufen das nächste Kommando aus der Queue holt.
Wäre super, wenn mir da jemand auf die Sprünge helfen könnte
MfG,
-- tehK
Zuletzt bearbeitet: