深圳网站设计小程序外贸 网站推广
深圳网站设计小程序,外贸 网站推广,WordPress域名管理插件,手机怎样建个人网站对我而言#xff0c;使用Rx-java的最大好处之一就是无论底层调用是同步还是异步#xff0c;因此代码看起来都完全相同#xff0c;因此该条目的标题也是如此。 考虑一个非常简单的客户端代码用例#xff0c;它执行三个缓慢运行的调用并将结果合并到一个列表中#xff1a; … 对我而言使用Rx-java的最大好处之一就是无论底层调用是同步还是异步因此代码看起来都完全相同因此该条目的标题也是如此。 考虑一个非常简单的客户端代码用例它执行三个缓慢运行的调用并将结果合并到一个列表中 String op1 service1.operation();
String op2 service2.operation();
String op3 service3.operation();
Arrays.asList(op1, op2, op3) 由于呼叫是同步的因此花费的时间会增加。 为了模拟慢速调用以下是每个方法调用中的实现类型 public String operation() {logger.info(Start: Executing slow task in Service 1);Util.delay(7000);logger.info(End: Executing slow task in Service 1);return operation1
} 因此在这些实现中使用rx-java的第一个尝试是简单地让这些长时间运行的操作返回通用类型Observable 一个糟糕的实现看起来像这样 public Observablestring operation() {logger.info(Start: Executing slow task in Service 1);Util.delay(7000);logger.info(End: Executing slow task in Service 1);return Observable.just(operation 1);
} 因此调用方实现将更改为以下内容 ObservableString op1 service1.operation();
ObservableString op2 service2.operation();
ObservableString op3 service3.operation();ObservableListString lst Observable.merge(op1, op2, op3).toList(); 查看调用者如何使用merge方法组合结果。 但是此时每个服务调用的调用仍是同步的为了使调用中断可以通过以下方式使服务调用使用线程池 public class Service1 {private static final Logger logger LoggerFactory.getLogger(Service1.class);public ObservableString operation() {return Observable.Stringcreate(s - {logger.info(Start: Executing slow task in Service 1);Util.delay(7000);s.onNext(operation 1);logger.info(End: Executing slow task in Service 1);s.onCompleted();}).subscribeOn(Schedulers.computation());}
} subscriptionOn使用指定的Scheduler运行实际操作。 该方法的优点在于该服务的调用代码根本没有更改那里的实现与以前完全相同而服务调用现在是异步的。 如果您有兴趣进一步探索这个样本 这里是一个GitHub库一起工作的例子。 翻译自: https://www.javacodegeeks.com/2015/02/async-abstractions-using-rx-java.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89397.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!