So rufen Sie eine Methode in Java asynchron auf

Ich habe angeschautGo's Goroutinen in letzter Zeit und dachte, es wäre schön, etwas ähnliches in Java zu haben. Soweit ich gesucht habe, besteht die übliche Methode zum Parallelisieren eines Methodenaufrufs darin, Folgendes zu tun:

final String x = "somethingelse";
new Thread(new Runnable() {
           public void run() {
                x.matches("something");             
    }
}).start();

Das ist nicht sehr elegant.Gibt es einen besseren Weg, dies zu tun? Ich brauchte eine solche Lösung in einem Projekt, also beschloss ich, meine eigene Wrapper-Klasse um einen asynchronen Methodenaufruf herum zu implementieren.

Ich habe meine Deckblattklasse in veröffentlichtJ-Go. Aber ich weiß nicht, ob es eine gute Lösung ist. Die Verwendung ist einfach:

SampleClass obj = ...
FutureResult<Integer> res = ...
Go go = new Go(obj);
go.callLater(res, "intReturningMethod", 10);         //10 is a Integer method parameter
//... Do something else
//...
System.out.println("Result: "+res.get());           //Blocks until intReturningMethod returns

oder weniger ausführlich:

Go.with(obj).callLater("myRandomMethod");
//... Go away
if (Go.lastResult().isReady())                //Blocks until myRandomMethod has ended
    System.out.println("Method is finished!");

Intern verwende ich eine Klasse, die Runnable implementiert, und arbeite mit Reflection, um das richtige Methodenobjekt abzurufen und aufzurufen.

Ich möchte eine Meinung zu meiner winzigen Bibliothek und zum Thema asynchrone Methodenaufrufe wie diese in Java. Ist es sicher? Gibt es schon einen einfacheren Weg?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage