iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java响应式编程之handle怎么使用
  • 860
分享到

Java响应式编程之handle怎么使用

2023-07-04 11:07:07 860人浏览 八月长安
摘要

这篇文章主要介绍“Java响应式编程之handle怎么使用”,在日常操作中,相信很多人在Java响应式编程之handle怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java响应式编程之handle怎

这篇文章主要介绍“Java响应式编程之handle怎么使用”,在日常操作中,相信很多人在Java响应式编程之handle怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java响应式编程之handle怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Java handle用法

JAVA响应式编程Reactor中如果需要对一个flux中的数据进行提前返回 可以使用handle

具体如下:

@GetMapping("/a")    public Mono<Object> a() throws InterruptedException {        long begin = System.currentTimeMillis();        Mono<String> m5 = Mono.just("").map(s -> {            try {                TimeUnit.SECONDS.sleep(5);                System.out.println("5");                System.out.println(System.currentTimeMillis() - begin);            } catch (InterruptedException e) {                e.printStackTrace();            }            return "5";        }).subscribeOn(Schedulers.boundedElastic());        Mono<String> m8 = Mono.just("").map(s -> {            try {                TimeUnit.SECONDS.sleep(8);                System.out.println("8");                System.out.println(System.currentTimeMillis() - begin);            } catch (InterruptedException e) {                e.printStackTrace();            }            return "8";        }).subscribeOn(Schedulers.boundedElastic());        Mono<String> m10 = Mono.just("").map(s -> {            try {                TimeUnit.SECONDS.sleep(15);                System.out.println("15");                System.out.println(System.currentTimeMillis() - begin);            } catch (Exception e) {                e.printStackTrace();            }            return "15";        }).subscribeOn(Schedulers.boundedElastic());                Mono<Object> single = Flux.merge(m8, m5, m10).handle(((s, synchronousSink) -> {            if ("8".equals(s)) {                synchronousSink.next("卢本伟牛");                synchronousSink.complete();            }        })).defaultIfEmpty("null").single();        return single;    }

subscribeOn(Schedulers.boundedElastic())是让这些mono进行异步处理

上述定义了3个Mono进行请求 使用Sleep进行模拟请求中业务处理耗时

m5是需要执行3s m8是需要执行8s m10是需要执行15s

如果我们有多个耗时处理的请求 需要同时请求 然后又需要合并结果 并且返回我们需要的结果 进行提前返回。

例如:我需要同时请求这些接口 当8这个接口有结果返回的时候 由于其他请求时间太长了 需要提前返回一个值 放弃其他结果处理 所以我们可以进行判断.

//这个s代表前面传入的元素 执行完会传入这个handle  // synchronousSink.next() 代表我执行完这个流返回给下一个进行处理  next(Object)  // synchronousSink.complete(); 代表我们执行完取消其他的流Flux.merge(m8, m5, m10).handle(((s, synchronousSink) -> {            if ("8".equals(s)) {                synchronousSink.next("卢本伟牛");                synchronousSink.complete();            }        })).subscribe(s -> {                    System.err.println(s);                });

由于上面当s为8的时候 将卢本伟牛传入下一个流 然后执行完成 所以还有个m10不会执行完 就会直接丢弃

我们进行测试

发现控制台打印

我们如果使用传统的mvc执行m5我们会耗时5s m8会耗时8s 加起来就是13s

我们使用响应式编程则只会耗时8s 当如果多个耗时操作拼接在一起 我们需要多个返回结果的时候我们可以使用handle进行提前返回

Java响应式编程之handle怎么使用

返回结果为卢本伟牛 也就是我们之前当s为8时执行的 ,synchronousSink.next(“卢本伟牛”);,将这个字符串传给最终结果的流,当然我们也可以根据自己的逻辑 发放多个synchronousSink.next。

Java响应式编程之handle怎么使用

handle的标准使用方式

在Java语言中,直接将handle声明为Activity的内部类去使用handle,非静态内部类会持有外部类的一个隐试引用,这样就可能造成外部类无法被垃圾回收,从而导致内存泄漏。

故而,给出规范的handle使用方式如下:

handle的基类

public class UIHandler<T> extends Handler{      protected WeakReference<T> ref;      public UIHandler(T cla){        ref = new WeakReference<T>(cla);     }       public T getRef(){          return ref != null ? ref.get() : null;      }}

handle运用实例

public class MainActivity extends Activity{     private final MainHandler mHandler = new MainHandler(this);     @Override    protected void onCreate(Bundle savedInstanceState){        super.oncreate(savedInstanceState);        setContentView(R.layout.activity_main);        mHandler.post(mRunnable);    }     private static final Runnable mRunnable = new Runnable(){         @Override         public void run(){          }    };     private class MainHandler extends UIHandler{         private MainHandler(MainActivity activity){             super(activity);         }                  @Override         public void handleMessage(Message msg){             super.handleMessage(msg);             MainActivity activity = (MainActivity)ref.get();             if(activity != null){                if (activity.isFinishing()                    return;          switch(msg.what){            case 1:            break;          }             }         }    }}

到此,关于“Java响应式编程之handle怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Java响应式编程之handle怎么使用

本文链接: https://www.lsjlt.com/news/344707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java响应式编程之handle怎么使用
    这篇文章主要介绍“Java响应式编程之handle怎么使用”,在日常操作中,相信很多人在Java响应式编程之handle怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java响应式编程之handle怎...
    99+
    2023-07-04
  • Java响应式编程之handle用法解析
    目录Java handle用法handle的标准使用方式handle的基类handle运用实例Java handle用法 JAVA响应式编程reactor中如果需要对一个flux中的...
    99+
    2022-11-13
    Java handle用法 响应式编程 Java handle
  • Spring5新特性之Reactive响应式编程
    目录1 什么是响应式编程2 回顾Reactor2.1 什么是Reactor2.2 为什么是Reactor2.3 Reactor模式的经典实现—Netty3 Spring5...
    99+
    2024-04-02
  • 什么是响应式编程
    本篇内容介绍了“什么是响应式编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近几年,随着Go、Node...
    99+
    2024-04-02
  • Java函数式编程怎么应用
    今天小编给大家分享一下Java函数式编程怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Java 根据常用需求场景的用...
    99+
    2023-07-04
  • 使用Java怎么实现响应式系统
    使用Java怎么实现响应式系统?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。初识响应式系统ReactiveX的本质就是Observer+Iterator+函数编程+异步。是一个...
    99+
    2023-06-15
  • Java并发编程之StampedLock锁怎么应用
    本篇内容介绍了“Java并发编程之StampedLock锁怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!StampedLock:St...
    99+
    2023-06-30
  • Project Reactor响应式编程是什么
    这篇文章主要介绍了Project Reactor响应式编程是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Project Reactor响应式编程是什么文章都会有所收获,下面我们一起来看...
    99+
    2023-07-05
  • Java响应式编程模型:如何使用Spring框架构建高性能应用程序?
    随着现代应用程序的复杂性不断增加,对于高性能和可扩展性的需求也越来越高。Java响应式编程模型是一种可以满足这些需求的方式。本文将介绍Java响应式编程模型,并展示如何使用Spring框架构建高性能应用程序。 什么是Java响应式编程模型...
    99+
    2023-11-06
    响应 并发 spring
  • 响应式编程与Spring:如何提高Java应用程序的效率?
    随着用户对互联网的需求越来越高,高性能、高并发的 Java 应用程序越来越受到开发者的关注。而响应式编程是一种能够提高应用程序效率的编程范式。本文将介绍什么是响应式编程,为什么要使用它以及如何将其与 Spring 框架结合使用。 一、什么...
    99+
    2023-11-06
    响应 并发 spring
  • java9新特性Reactive Stream响应式编程API怎么用
    这篇文章主要介绍“java9新特性Reactive Stream响应式编程API怎么用”,在日常操作中,相信很多人在java9新特性Reactive Stream响应式编程API怎么用问题上存在疑惑,小编查阅了各式资料,...
    99+
    2023-06-29
  • Spring响应式编程:Java API中的新趋势?
    随着现代化Web应用程序的不断发展,对于高吞吐量和低延迟的需求越来越高。在这样的需求下,异步编程和响应式编程成为了重要的解决方案。Spring框架一直以来都是Java开发中最受欢迎的框架之一,而现在,Spring框架也引入了响应式编程模型...
    99+
    2023-09-21
    api spring 响应
  • Vue2响应式系统之深度响应怎么实现
    本文小编为大家详细介绍“Vue2响应式系统之深度响应怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue2响应式系统之深度响应怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、场景import&...
    99+
    2023-06-30
  • Spring5的Reactive响应式编程是什么
    本篇内容介绍了“Spring5的Reactive响应式编程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 什么是响应式编程一句话总结...
    99+
    2023-06-29
  • Java中响应式编程如何影响索引数据类型?
    Java作为一门强大的编程语言,一直在不断的发展和创新,其中响应式编程是一种非常流行的编程范式。随着响应式编程的不断发展,它对Java中的索引数据类型也产生了一些影响。本文将详细介绍Java中响应式编程如何影响索引数据类型,并通过演示代码...
    99+
    2023-09-09
    响应 索引 数据类型
  • Java开发者必看!如何使用响应式编程生成二维码?
    二维码(QR Code)是一种二维码码制,由日本DENSO WAVE公司于1994年发明。它可以被快速扫描和读取,使得信息的传递更加便捷,被广泛应用于支付、广告、物流等领域。在Java开发中,生成二维码也是一个常见的需求。本文将介绍如何使...
    99+
    2023-09-07
    响应 二维码 shell
  • Java中的数据类型:如何在响应式编程中使用异步?
    随着互联网技术的不断发展,响应式编程逐渐成为了一种主流的编程模型。在响应式编程中,异步编程是一项非常重要的技术,能够帮助我们更好地处理高并发的场景,提高程序的性能和稳定性。而在Java中,数据类型的选择也会影响到我们在响应式编程中使用异步...
    99+
    2023-10-21
    数据类型 响应 异步编程
  • Java8函数式编程之收集器怎么应用
    这篇文章主要介绍“Java8函数式编程之收集器怎么应用”,在日常操作中,相信很多人在Java8函数式编程之收集器怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java8函数式编程之收集器怎么应用”的疑...
    99+
    2023-07-06
  • Java 异步编程中,如何使用 Path 响应请求?
    随着网络技术的不断发展,Web 应用程序的性能要求越来越高。为了提高 Web 应用程序的性能,我们需要使用异步编程技术。Java 语言提供了多种异步编程技术,其中最常用的是 Path。Path 是 Java NIO 中的一个类,可以在异步...
    99+
    2023-10-31
    异步编程 响应 path
  • 响应式编程在 PHP、JavaScript 和 NumPy 中的应用
    响应式编程(Reactive Programming)是一种编程范式,它强调数据流的流动和变化。在响应式编程中,我们可以定义数据流并对其进行操作,同时响应其变化。响应式编程可以应用于多种编程语言,包括 PHP、JavaScript 和 N...
    99+
    2023-11-11
    javascript 响应 numpy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作