Java中怎么实现响应式编程

Java中怎么实现响应式编程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

专业从事企业网站建设和网站设计服务,包括网站建设、域名注册、虚拟空间、企业邮箱、微信公众号开发、微信支付宝小程序开发App定制开发、软件开发、等服务。公司始终通过不懈的努力和以更高的目标来要求自己,在不断完善自身管理模式和提高技术研发能力的同时,大力倡导推行新经济品牌战略,促进互联网事业的发展。

Reactive概念

       Reactive Programming: 响应式编程,异步非阻塞就是响应式编程,与之相对应的就是命令式编程。是一种基于数据流(data stream)和变化传递的申明式的编程范式。 Reactive并不是一门新技术,不用Reactive照样可是实现非阻塞编程,比如用观察者模式实现。Reactive的另一种实现方式就是消息队列。

       Reactive的关键点:

      声明式的编程规范,数据流,传播改变,使用动态数组或者静态事件。   

      spring5实现了一部分Reactive:

      Spring WebFlux:  Reactive Web(non-blocking  servers  in genneral)

      Spring Web MVC:传统的Servlet Web (serrvlet application in general)

为什么需要反应式的编程

 1.命令式编程VS声明式编程

       实际上我们大多数程序员都是使用命令式编程,这也是计算机的工作方式。命令式编程就是对硬件操作的抽象,程序员要通过指令,精确的告诉计算机干什么事情。声明式编程是解救程序员的利器,声明式编程更关注的是我要什么(What)而不是怎么去做(How).SQL是经典的声明式语言,我们通过SQL描述想要什么,最终由数据库引擎执行SQL语句并将结果返回给我们。

2.同步编程VS异步编程

        在谈到同步与异步的时候就要说一下,阻塞与非阻塞的概念,因为这两组概念很容易混淆。他们描述的是同一个东西,但是关注点不同。阻塞与非阻塞描述的是当前线程的状态,而同步与异步则关注方法调用结果的通知机制。因为是从不同角度描述方法的调用过程,所以这两组概念可以相互组合,即将线程状态以及结果通知机制进行组合。例如JDK1.3之前BIO是同步则塞,JDK1.4及以后的NIO是同步非阻塞,JDK1.7及以后的NIO2是异步非阻塞模式。

      同步编程的优点是代码简单并且容易理解,代码按照先后顺序执行,缺点是CPU利用率低,大部分都浪费在IO等待上。

      异步编程通过充分利用CPU资源并行执行任务,在执行时间和资源利用率上远远高于同步方法。

      同步编程面临的挑战:

传统应用通常基于Servlet容器部署,而Servlet是基于线程的请求处理模型。从上文的讨论中我们发现,通常需要设置一个较大的线程池获得良好的性能,较大的线程池会导致以下三个问题:

1.额外的内存开销。在Java中每个线程都有自己栈空间,默认是1MB。如果线程池的大小被设置为200,那么需要200MB内存,一方面造成内存浪费,一方面导致应用启动慢。

2.CPU利用率低 有两个方面会导致CPU利用率很低。一方面是JDK1.2之后,每个平台的JVM实现都使用1:1线程模型,这意味着一个java线程会被映射到一个轻量级进程,而有效的轻量级进程数取决于CPU的个数以及核数。如果Java的线程数远大于轻量级进程数,则频繁的线程上下文切换会浪费大量的CPU时间,另一方面,由于传统的远程操作或者IO操作均为阻塞操作,会导致执行线程挂起从而无法执行其他任务,大大降低了CPU的利用率。

3.资源竞争激烈 当增大线程池后其他共享资源可能成为性能瓶颈,如数据库连接资源。会导致多个线程竞争数据库连接,使得数据库连接成为系统瓶颈。

关于Java中怎么实现响应式编程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。

新闻名称:Java中怎么实现响应式编程
标题网址:https://www.cdcxhl.com/article36/piscsg.html

成都网站建设公司_创新互联,为您提供全网营销推广关键词优化微信小程序用户体验动态网站网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设