Einfacher Aufruf der Methode im neuen Thread

8

Ich schreibe eine kleine App und jetzt habe ich ein Problem entdeckt. Ich muss eine (später vielleicht zwei) Methode aufrufen (diese Methode lädt etwas und gibt das Ergebnis zurück), ohne im Fenster von app zu hängen.

Ich habe Klassen wie Executor oder Callable gefunden, aber ich verstehe nicht, wie man mit diesen arbeitet.

Können Sie bitte irgendeine Lösung posten, die mir hilft?

Danke für alle Hinweise.

Bearbeiten: Die Methode MUSS das Ergebnis zurückgeben. Dieses Ergebnis hängt von den Parametern ab. Etwas wie das:

%Vor%

Diese Methode funktioniert ungefähr 8-10 Sekunden. Nach dem Ausführen dieser Methode kann der Thread gestoppt werden. Aber ich muss die Methoden alle 2 Minuten anrufen.

Bearbeiten: Ich habe Code mit diesem bearbeitet:

%Vor%

Mit diesem Code bekomme ich wieder einen Fehler (auch wenn ich return null aus catch -Block setze).

    
Sk1X1 07.04.2013, 19:55
quelle

3 Antworten

23

Erstens würde ich empfehlen, sich die Java-Thread-Dokumentation .

Mit einem Thread können Sie einen Schnittstellentyp namens Runnable übergeben. Die Dokumentation finden Sie hier . Ein Runnable ist ein Objekt, das eine Methode run hat. Wenn Sie einen Thread starten, ruft er den Code in der run -Methode dieses ausführbaren Objekts auf. Zum Beispiel:

%Vor%

Nun heißt das, wenn Sie t.start() aufrufen, wird der von Ihnen benötigte Code ausgeführt, ohne dass der Hauptthread zurückbleibt. Dies wird als Asynchronous -Methodenaufruf bezeichnet, was bedeutet, dass er parallel zu jedem anderen Thread ausgeführt wird, den Sie geöffnet haben, wie Ihr main -Thread. :)

    
christopher 07.04.2013, 19:59
quelle
21

Seit Java 8 können Sie eine kürzere Form verwenden:

%Vor%

Aktualisierung: Sie können auch die Methodenreferenz verwenden:

%Vor%

Sie können es verwenden, wenn Ihre Argumentliste die gleiche ist wie in @FunctionalInterface , z Runnable oder Aufrufbar .

Siehe mehr: Platform.runLater und Task in JavaFX , Methodenreferenzen .

    
Andrii Abramov 27.10.2015 19:22
quelle
1

Wenn Sie in Java 8 keine Parameter benötigen, können Sie Folgendes verwenden:

%Vor%

Oder bei Parametern:

%Vor%     
Rahul Singh 01.11.2016 13:39
quelle