Как асинхронно вызывать метод в Java

Я смотрел наГоу рутины в последнее время и подумал, что было бы неплохо иметь что-то подобное в Java. Насколько я искал, общий способ распараллеливания вызова метода - сделать что-то вроде:

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

Это не очень элегантно.Есть ли лучший способ сделать это? Мне нужно было такое решение в проекте, поэтому я решил реализовать свой собственный класс-оболочку вокруг вызова асинхронного метода.

Я опубликовал свой класс обертки вJ-Go, Но я не знаю, хорошее ли это решение. Использование простое:

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

или менее многословный:

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

Внутренне я использую класс, который реализует Runnable и выполняет некоторую работу Reflection, чтобы получить правильный объект метода и вызвать его.

Я хочу получить некоторое мнение о моей крошечной библиотеке и о том, как делать вызовы асинхронных методов в Java. Это безопасно? Есть ли уже более простой способ?

Ответы на вопрос(10)

Ваш ответ на вопрос