首页 > 编程知识 正文

java方法返回值返回给谁,java异步接口实现

时间:2023-05-04 12:06:28 阅读:42709 作者:4900

注:本文基于jdk1.8

1 .异步不需要返回值

CompletableFuture.runAsync (

示例代码如下:

公共JSON结果测试

JsonResult result=new JsonResult (;

CompletableFuture.runAsync (

//准备请求

jsonresultpostresult=app tool.post request (URL、params、headers );

//要求结果处理

if (! postResult.getCode ().equals ('0) ) }

//要求失败

logger.error ('请求失败');

}

);

返回结果;

}

在上面的代码中,异步执行一个请求,方法不需要等待开机自检请求的结束;

2 .异步需要返回值

CompletableFuture.supplyAsync (

示例代码如下:

公共字符串测试(

completablefuturefuture=completablefuture.supply async ((-)//准备请求

jsonresultpostresult=app tool.post request (URL、params、headers ); returnpostResult.getCode (;

); //get ) )方法将一直堵塞,直到feature完成。 result是异步结果,其中get ()用try-catch包裹

String result=feature.get (; 返回结果;

}

3 .等待任意数量的异步全部完成

CompletableFuture.allOf (

3.1等待任何数量的异步全部完成,而不考虑异步结果;

示例代码如下:

公共字符串测试(

listUrls=Arrays.aslist(…;

List contentFutures=urls.stream ().map (URL-completablefuture.run async ) )-{//准备请求

jsonresultpostresult=app tool.post request (URL; returnpostResult.getCode (;

() ).collect(collectors.tolist ) );

completablefutureallfutures=completablefuture.all of (

内容futures.to array (newcompletablefuture [内容futures.size ()

); //等待异步全部结束

allFutures.join (; 返回'1';

}

在此,我们使用了join (等待异步结束。 join ) )和get ) )的方法相似,但区别如下

join ) )抛出未选中的执行; get ) )投checked exception需要用try-catch包裹

3.2 .必须等待任意数量的异步全部完成,异步返回结果;

示例代码如下:

公共字符串测试(

listUrls=Arrays.aslist(…;

List contentFutures=urls.stream ().map (URL-completablefuture.supply async ) )-{//准备请求

jsonresultpostresult=app tool.post request (URL; returnpostResult.getCode (;

() ).collect(collectors.tolist ) );

completablefutureallfutures=completablefuture.all of (

内容futures.to array (newcompletablefuture [内容futures.size ()

).then apply (v-{ returncontent futures.stream ).map (content future-content future.join ) )。

); 设置等待try{//异步获取返回结果的等待时间40s

list data=allfutureresult.get (40,TimeUnit.SECONDS );

//'0'失败'1'成功returndata.indexof('0' )-1? '0' : '1';

}catch(exceptione ) {

Logger.error(e; 返回'0';

}

}

线程池

下一次更新

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。