URL: https://www.overclockers.at/coding-stuff/java_best_practice_fuer_interaktion_mit_externen_p_208309/page_2 - zur Vollversion wechseln!
Ja aber auch nur, wenn man read aufruft; nicht einfach so im Hintergrund (was für mein Problem notwendig wäre), oder?
nein, im hintergrund nicht - aber auch dafür würde sich eine nebenläufiger thread empfehlen, der ständig ein read() oder readavail() macht
Ja, mit einem Thread könnte man es natürlich machen. Aber wenn es auch ohne geht, ist das ein bisschen verschwenderisch.
Aber eigentlich gibts ja genau für dein Prob den BufferedReader - den kannst ja gelegentlich mit der Mehtode .ready() quälen ob Schon etwas "non-blocking" von ihm zu lesen ist, wenn gewünscht kannst du den auch mit einer eigenen Grösse initialisieren (über den Constructor)
Was genau ist verschwenderisch an einem Thread?
Und nochmal - Rufst du ein externes Programm auf und willst Zeitgemäß auf dessen Outputs reagieren, kommst du nicht rum um einen eigenen Thread. Dieser Thread hat dann exakt 0 CPU-Last während er blockt (was der Großteil der Zeit so sein wird wenn du nicht gerade ein Codec aufrufst o.Ä.), somit ist alles was er "verschwendet" ein paar kB RAM.
Harry: Stimmt schon, nur kommst du da sehr leicht in die Situation dass du den Buffer nicht oft genug liest.
Zitat von watchoutWas genau ist verschwenderisch an einem Thread?
Zitat
Und nochmal - Rufst du ein externes Programm auf und willst Zeitgemäß auf dessen Outputs reagieren, kommst du nicht rum um einen eigenen Thread.
Du meinst also ein Programm welches ständig einen Speicherbereich pollt (in ner Schleife, wwi) ist besser als ein 2. Thread (wohlgemerkt THREAD, nicht Process) welcher vor sich hinschlummert, und der vom OS dann von einem Software Interrupt aufgeweckt wird?
Von wieviel Bytes Hauptspeicher reden wir in deinem Embedded System? (Welches übrigens noch Java unterstützt)
Ich glaubs irgendwie nicht, aber wenn ich mal in der Situation bin schenk ich dir nen Keks
Wer hat was von Polling gesagt? (Stichwort select)Zitat von watchoutDu meinst also ein Programm welches ständig einen Speicherbereich pollt (in ner Schleife, wwi) ist besser als ein 2. Thread (wohlgemerkt THREAD, nicht Process) welcher vor sich hinschlummert, und der vom OS dann von einem Software Interrupt aufgeweckt wird?
ZitatVon wieviel Bytes Hauptspeicher reden wir in deinem Embedded System? (Welches übrigens noch Java unterstützt)
Entweder du blockst oder du pollst, select blockt (wenn es das ist was ich denke), womit wir wieder beim Thema eigener Thread sind, weil mit nur einem Thread (welcher gerade blockt) Wird es schwer fallen zB. auf Eingaben vom User in einem UI zu reagieren.Zitat von RingdingWer hat was von Polling gesagt? (Stichwort select)
ich sag schonmal danke für die ausführungen, sehr interessant
Ich hab mich jetzt mal hingesetzt und versucht, was Vernünftiges zu finden, aber anscheinend sind Threads wirklich die einzige Methode, um das korrekt hinzubekommen. Dieser Artikel sagt eigentlich alles, was gesagt werden muss, daher belasse ich es dabei…
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025