Multithreading Problem

meister-g

Bekanntes Mitglied
Hallo Java-Gemeinde

ich habe folgendes Problem:
Ein Messgerät liefert alle 10ms Messwerte. Ich Frage die Schnittstelle alle 100ms ab und schicke die ca. 10 Daten in einer ArrayList via Observer Muster an 2 Observer: Ein Diagramm und einen Analyzer.
Jeder Messwert wird vom Analyzer geprüft und alle paar Sekunden muss eine Berechnung gemacht werden. Auf lahmen Rechnern stockt nun das Diagramm verständlicherweise kurz wenn eine Berechnung angestpoßen wird, da alles in einem Thread stattfindet.

Deshalb habe ich den Analyzer als Deamon mit geringer Priorität realisiert, der alle X (zb 50, 300) ms (sleep) den Eingangspuffer kontrolliert und dann alle Messwerte durchgeht und ggf berechnet. Der Eingangspuffer besteht aus Vectoren (Threadsafe, performancemäßig wohl nicht der Hit sollte aber OK sein in diesem Fall?!), die eben immer über die Observermethode gefüttert werden. Zusätzlich "blockiere" ich den Analyzer (einfach wieder sleep), wenn der Puffer gerade geschrieben wird (die Observermethode die ArrayList an die Puffervectoren hängt). Auch wenn ich den Haupt/Grafikthread auf hohe Priotität setze ändert sich am Fluss des Diagramms gar nichts; es stockt genauso dann, wenn der Analyzer einen Umschwung in den Daten dedektiert und eine Berechnung anstößt. Das kapiere ich nicht... während der Berechnung müsste doch eigentlich der Thread mit höherer Priorität den Diagrammfluss erhöhen.

Kann mit jemand Tipps für den Fehler / eine bessere Architektur / Performanceoptimierung geben?

Ist es evtl notwendig/möglich immer mal wieder wähnrend der Berechnung den Analyzer schlafen zu legen / zu yielden?
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Klingt ein bicßhen nach Producer-Consumer, kann sein dass man das recht elegant und einfach (und vor allem: einfach Thread-safe) mit einer BlockingQueue (Java Platform SE 6) lösen könnte.

"Zusätzlich "blockiere" ich den Analyzer (einfach wieder sleep),"
klingt seltsam, beschreib' ggf. mal genauer (evtl. mit code...)
 

meister-g

Bekanntes Mitglied
"Zusätzlich "blockiere" ich den Analyzer (einfach wieder sleep),"
klingt seltsam, beschreib' ggf. mal genauer (evtl. mit code...)

habs grade nicht hier, aber pseudocode sollte reichen:

//observermethode
newData(arraylisten neuedaten) {
block = true;
kopiereNeueDatenInVectoren()
block = false;
}

run() {
if (block)
sleep();
else {
analysiereUnBerechneVectoren()
sleep();
}
}

Mit dem Blockieren möchte ich einfach vermeiden, dass meine X Puffer beim analysieren verschieden groß sind.
Dass während analysiereUnBerechneVectoren() in dei Vectoren ggf geschrieben führt programmatisch zu keinem Problem und sollte ja threadsicher sein
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A MultiThreading.. Scheduling-Problem? Allgemeine Java-Themen 10
A Problem mit Zufallszahlen und Multithreading Allgemeine Java-Themen 14
I Problem mit Multithreading Allgemeine Java-Themen 4
flashfactor Multithreading-Problem Allgemeine Java-Themen 4
W Multithreading Alphabet Allgemeine Java-Themen 3
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
J Threads Multithreading Allgemeine Java-Themen 15
K Multithreading plattform übergreifend? Allgemeine Java-Themen 3
R Bruteforce hashes mit multithreading. Funktioniert das so? Allgemeine Java-Themen 0
B Threads Multithreading Threads sollen warten Allgemeine Java-Themen 12
K Multithreading: Service(Task), wait und continue Allgemeine Java-Themen 21
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
C Ressourcensparendes Multithreading Allgemeine Java-Themen 3
A Multithreading mit JButtons Allgemeine Java-Themen 5
S Threads Multithreading- langsamer als Singlethreading-Programm Allgemeine Java-Themen 6
D Threads Multithreading Allgemeine Java-Themen 25
dayaftereh Multithreading Allgemeine Java-Themen 16
E Multithreading and volatile Allgemeine Java-Themen 10
J Wie die gleichzeitige Ausführung mehrerer Tasks trotz Multithreading verhindern? Allgemeine Java-Themen 2
G multithreading, concurrency conveyor belt beispiel Allgemeine Java-Themen 2
H Singleton und MultiThreading [erledigt] Allgemeine Java-Themen 3
C Collection Multithreading? Allgemeine Java-Themen 33
O Multithreading mit Java 5 u den Concurrency APIs Allgemeine Java-Themen 7
O Multithreading und Multiprozessor Allgemeine Java-Themen 4
K Multithreading bei statischen Methoden Allgemeine Java-Themen 2
T ungewöhnliche Exception (Multithreading und JList) Allgemeine Java-Themen 10
K Frage zu ProgressBars, Algorithmen und Multithreading ->F Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben