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

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как асинхронно вызвать метод в Java

Сообщение Anonymous »

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

Код: Выделить всё

final String x = "somethingelse";
new Thread(new Runnable() {
public void run() {
x.matches("something");
}
}).start();
Это не очень элегантно. Есть ли лучший способ сделать это? Мне нужно было такое решение в проекте, поэтому я решил реализовать свой собственный класс-оболочку для вызова асинхронного метода.

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

Код: Выделить всё

SampleClass obj = ...
FutureResult 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, и выполняю некоторую работу по рефлексии, чтобы получить правильный объект метода и вызвать его.

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

Подробнее здесь: https://stackoverflow.com/questions/184 ... od-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»