导航:首页 > 方法技巧 > 循环调用异步方法如何获取返回值

循环调用异步方法如何获取返回值

发布时间:2023-01-06 07:34:22

1. 怎么循环获取异步请求中回调函数的返回值

这问题不是这i么解的吧,异步的回调函数,你获取回调函数的返回值,时间不确定的。要加个标志位来判断回调函数是否执行完毕。

2. 如何在java中获取线程异步执行之后的结果

java中提供了Future<V>接口和实现了Future接口的FutureTask<V> 类来将线程执行之后的结果返回(通过get()方法)。
1.Future<V>接口
Runnable接口执行任务是不返回任何值的,Runnable的run()方法的执行结果是void,而Future接口的call方法是有返回结果的,这是Runnable跟Future的区别之一,它们的另一个不同之处就是实现了Runnable接口的任务执行是调用ExecutorService的execute(Runnable task)方法,而实现了Future接口的任务是调用ExecutorService的submit(Future task)方法。调用Future的get()方法就能直接得到任务的返回值,该方法会一直阻塞直到任务的结果出来为止,我们可以调用Future的isDone()方法来判断该任务的结果是否准备就绪。
[java] view plain
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class TestFuture {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executor = Executors.newCachedThreadPool();
Future result1 = executor.submit(new Callable() {
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += i;
}
return sum;
}
});
Future result2 = executor.submit(new Callable() {
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 10; i < 100; i++) {
sum += i;
}
return sum;
}
});
executor.shutdown();
System.out.println(result1.get() + result2.get());
}
}
2.FutureTask类
FutureTask实现了Future接口,将一个Callable实例作为参数传给它,就能创建一个FutureTask实例,然后用ExecutorService的submit方法来执行这个实例。最后同样是用get方法获取线程执行后的结果。
[plain] view plain
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
public class TestFutureTask {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executor = Executors.newCachedThreadPool();
Callable task = new Callable() {
@Override
public String call() throws Exception {
return "结果";
}
};
FutureTask ft = new FutureTask(task);
executor.submit(ft);
System.out.println(ft.get());
executor.shutdown();
}
}empty

3. 怎么在主调方法内获取异步请求的回调函数的返回值

简单,并且处理很快,就在回调函数中直接处理即可,如果需要花费较长的时间,你就需要建立数据缓冲区,先将数据填入缓冲区,然后直接返回,同时建立单独的线程来处理缓冲区的数据,这当中需要注意缓冲区的同步操作保护例如,你的界面程序调用通信模块,在界面程序中设置了回调用来响应通信模块中接收到的数据,在处理时将收到的数据显示在界面上,对于数据量较少的情形,你直接在回调中将收到的数据抛出消息给主界面刷新即可;对于数据量很大的场合,你直接抛消息很可能会失败,而且每次收到数据都触发界面刷新会严重降低性能,那么就需要先将数据填入缓冲区,主界面以定时读取数据的方式来刷新另外,虚机团上产品团购,超级便宜

4. 如何获取AsyncTask 异步处理的返回值

你新建的类extends AsyncTask后要提供三个泛型参数,并且重载你需要的方法, 三个参数Params,Progress和Result,最后一个就是后台操作后可以返回的值,看例子 public class ProgressBarAsyncTask extends AsyncTask{ /** * 这里的String参数对

阅读全文

与循环调用异步方法如何获取返回值相关的资料

热点内容
窗帘幔子怎么安装方法 浏览:847
简述利润表阅读与分析的方法 浏览:979
猪群最佳引种方法 浏览:57
电脑组装方法步骤图片 浏览:471
花生多效唑的使用方法及注意事项 浏览:444
如何学会吹笛子的方法 浏览:561
环己酮的检测方法 浏览:478
四米八锻炼身体的方法 浏览:784
第八代五粮液酒鉴别真伪的方法2021年 浏览:545
玉石的鉴别方法用手电照 浏览:618
常见的案例研究方法有哪些 浏览:452
100个计算方法视频 浏览:341
膨胀挂钩安装方法 浏览:684
老式全站仪坐标计算方法 浏览:605
支原体的治疗方法 浏览:436
标枪训练方法的应用 浏览:287
快速消耗儿童体力的方法 浏览:667
纸质退单正确书写方法 浏览:94
马云手机创业方法 浏览:567
仔猪的脚疼怎么治疗方法 浏览:974