JavaFx ExekutorService Problem

Diskutiere JavaFx ExekutorService Problem im AWT, Swing, JavaFX & SWT Bereich.
JavaTalksToMe

JavaTalksToMe

Guten Tag,

ich habe jetzt zum ersten mal den ExekutorService benutzt. Allerdings klappt das nicht so, wie ich es mir vorgestellt hatte.

Was ich möchte: Es soll ein GIF(Image) für 1,5 Sekunden angezeigt werden. Danach, soll es wieder verschwinden. Ich dachte mir, ich löse das über einen Thread. Mein Code sieht Folgendermaßen aus:

Code:
 btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {         


                            ExecutorService executorService = Executors.newFixedThreadPool(1);


                            Thread thread = new Thread(() -> {

                                Platform.runLater(() -> {
                                    playMyAni(btn);
                                });
                            });
                            executorService.submit(thread);
                            try {
                                executorService.awaitTermination(1500, TimeUnit.MICROSECONDS);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
Der Hintergrundgedanke war, ein ImageView an meinen gewünschten Koordinaten zu erschaffen und die Animation für 1.5 Sekunden abspielen zu lassen. Dann schließe ich den Thread, zögere aber die Termination hinaus. Anschließend lösche ich das view von der Oberfläche. Allerdings bleibt das View weiterhin auf der GUI und läuft munter weiter. Das iterieren des Parents und löschen dieses Nodes bringt auch nichts.

Kann mir wer einen Tipp geben?

Danke im Voraus
 
mrBrown

mrBrown

Für den Zweck klingen Timelines geeigneter?

Der Hintergrundgedanke war, ein ImageView an meinen gewünschten Koordinaten zu erschaffen und die Animation für 1.5 Sekunden abspielen zu lassen. Dann schließe ich den Thread, zögere aber die Termination hinaus. Anschließend lösche ich das view von der Oberfläche. Allerdings bleibt das View weiterhin auf der GUI und läuft munter weiter. Das iterieren des Parents und löschen dieses Nodes bringt auch nichts.
In dem Code sieht man leider weder das anzeigen noch das ausblenden der ImageView. Der Nutzung des Threads sieht in der Form aber ziemlich sinnlos aus:
Du startest einen Thread, der dann sofort playMyAni ausführt. Danach wartest du auf den Thread, der dann aber wahrscheinlich schon fertig ist.

Effektiv ist das das gleiche, wie direkt playMyAni aufzurufen und auf den Thread zu verzichten.

Gleichzeit verstecken sich dort aber logische Fehler - das 1,5s warten würde den UI-Thread blockieren, also eigentlich genau zu dem führen, was man mit Threads vermeiden wollen würde.
 
JavaTalksToMe

JavaTalksToMe

Ok, ich werd mir nochmal die Doku anschauen.

Ahh.. Habs grad mit den Timeline gemacht. Es funktioniert auf Anhieb. Dabei hatte ich heute mit den Timelines es sogar schon probiert. Dachte aber, das wäre was spezifisches für Animatione. 🙄

Es klappt jedenfalls jetzt.

Danke dir.
 
Zuletzt bearbeitet:
Thema: 

JavaFx ExekutorService Problem

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben