Bumbleforge6 Geschrieben August 18, 2016 at 13:30 Geschrieben August 18, 2016 at 13:30 Hi, ich benutze in meinem Java Programm den Distanced Reached Listener des Distance US Bricklets. Wenn eine gewisse Entfernung unterschritten ist, dann möchte ich mein Hauptprogramm an genau dieser Stelle unterbrechen und den Code, welche ich in dem distanced Reached Block definiere, ausführen lassen. Das funktioniert soweit. Wenn dann wieder die Entfernung überschritten wird, möchte ich genau an der vorherigen Stelle im Uhrsprungscode weitermachen. Läuft die distanceReached Funktion in einem zweiten Thread und kann ich von ihr aus den Thread des Hauptprogrammes anhalten und wenn die Entfernung wieder überschritten wird den zweiten Thread wieder weiterlaufen lassen, vielleicht mit einem Listener, der ansprringt wenn die Entfernung größer als ein konfigurierter Threshold ist? Vielen Dank schonmal für die Antwort Bumbleforge 6 Zitieren
Masder Geschrieben August 19, 2016 at 06:53 Geschrieben August 19, 2016 at 06:53 Hallo Bumbleforge6, Im Buch: "Java ist auch eine Insel" habe ich etwas gefunden das genau das machen würde. den Thread an halten bis du sagt weiter machen . 14.3.12 Arbeit niederlegen und wieder aufnehmen * Zur nächsten ÜberschriftZur vorigen Überschrift Wollen wir erreichen, dass ein Thread für eine bestimmte Zeit die Arbeit niederlegt und ein anderer den schlafenden Thread wieder aufwecken kann, müssten wir das selbst implementieren. Zwar gibt es mit suspend() und resume() zwei Methoden, doch diese Start-Stopp-Technik ist nicht erwünscht, da sie ähnlich problematisch ist wie stop(). class java.lang.Thread implements Runnable final void suspend() Lebt der Thread, wird er so lange eingefroren (schlafen gelegt), bis resume() aufgerufen wird. final void resume() Weckt einen durch suspend() lahmgelegten Thread wieder auf, der dann wieder arbeiten kann. Kann aber nicht sagen wie gut das funktioniert habe es selber noch nie benutz. hoffe das hilft dir weiter. Gruß Masder Zitieren
photron Geschrieben August 19, 2016 at 12:03 Geschrieben August 19, 2016 at 12:03 Von suspend/resume/stop wird abgeraten, weil du keine Kontrolle hast in welchem Zustand du den Thread anhältst. Der Thread könnte gerade etwas tun wobei du ihn nicht unterbrechen willst. Es gibt verschiedene Alternativen das zu erreichen. Aber meine erste Frage wäre, warum willst du dein Programm so strukturieren? Was ist der Hintergedanke? Zitieren
Bumbleforge6 Geschrieben August 29, 2016 at 13:55 Autor Geschrieben August 29, 2016 at 13:55 Ich habe es jetzt gelöst, habe es aber ein wenig anders gemacht Ich arbeite jetzt mit einer boolean volatile Variable, welche ich in dem Listener Thread setze. Die Anwendung ist ein Roboter. Ich überprüfe über den Distance Listener, wie groß der Abstand zu Umgebungsobjekten ist. Ist ein gewisser Abstandwert unterschritten, möchte ich die Bewegung des Roboters stoppen und eine Exception werfen, auf welche dann im main Programm reagiert werden kann. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.