畅聊Java异步编程


趁着阿里的“加多”大佬推出了本身的新书《Java异步编程实战》,我也来简单聊下本身对异步编程的了解吧。

html

我是如何接触到异步编程的呢?

目前,我实际上是一个刚入职场不久的年轻人,对于异步编程的了解和使用有限。在实际的工做中使用最多的异步编程,就是建立一个线程池来执行一个异步任务,使得主线程能够继续往下执行,不被阻塞。那么,我是如何接触到异步编程技术的呢?web

一切还得从3年前,那个“腥风血雨”的校园招聘提及。相信大多数的小伙伴都是从接触Java并发编程开始的,固然我也不另外。在校园招聘的时候,为了应对面试官,经过面试环节,我对JUC并发包中的内容进行了比较详细的背诵,对于一些知识点都“朗朗上口”,就问你强不强?面试

在校园招聘期间,我对线程池有了必定的理论了解,知道线程池能够执行一些异步任务,而且对于Future能够用来获取异步任务的执行结果也都有所耳闻。在面试期间,我也会给面试官进行解析(背诵)这些知识点,嘿嘿。

数据库

工做以后,都在什么场景下使用异步编程呢?

其实吧,我在实际工做中须要使用异步编程的场景不太多,通常状况下咱们所执行的任务仍是比较重要的,因此都要求同步来执行(不知道是否是技术不够,致使影响了效率都不清楚,尴尬.jpg)。编程

工做中,使用异步编程的场景大概就是客户端请求服务端一个接口,服务端作不到在短期内返回该结果。因此,服务端启动了一个异步任务(线程)去执行该请求的具体任务,该请求能够直接返回。而后,客户端能够在一段时间内来从新获取服务端异步线程执行的结果。这些异步编程的使用场景都感受很简单?可是异步编程应该不止于此,不然“加多”大佬也不会写出如此一部技术书籍,感受是本身“菜是原罪”。

并发

实际工做中,关于异步编程有疑惑吗?

有,必须有。还真是巧了,这段时间关于异步编程的使用场景,我还真的遇到了一个令我困惑的地方。大概的场景描述以下:框架

  • 客户端A在调用服务端B的一个接口1,服务端B的接口完成了第一步处理逻辑以后,已经获得了客户端A想要的结果。按照正常来讲,这个时候能够返回结果。而后客户端A会接着请求服务端C的接口2。
  • 可是服务端B在处理完逻辑以后,还须要调用一个外部接口2,而且将结果插入数据库。
  • 服务端C在处理请求的过程当中,最好是让其使用到刚刚插入数据库中的数据。

看起来,这就是一个典型的异步编程技术使用的场景吧?异步

可是,服务端B在处理完逻辑以后,调用一个外部接口2若是采用了异步方式。会存在当客户端后续请求服务端C的时候,这个外部接口返回的数据尚未被写入数据库,致使预期数据丢失编程语言

若是采用同步方式调用外部接口2呢?会存在客户端请求服务端B接口超时问题(由于额外同步调用外部接口超时致使)。svg

若是外部接口的调用恰好仍是有代价的,好比是收费接口,那么咱们经过收费接口获取的数据在异步方式中可能就没有被使用到,亏了;若是是同步方式,接口超时又影响了用户体验,仍是很差。

但愿在看了加多老师的新书《Java异步编程实战》以后,我能够从中找到一些解决思路。

Java异步编程实战》有哪些干货?

Java异步编程实战》一书对Java中相关的异步编程技术进行概括总结,为读者提供一个统一文档来查阅、参考。该书也是国内首本异步编程著做,做者全面解析Java异步编程,针对各类常见异步编程场景,从编程语言、开发框架等角度深刻讲解了异步编程的原理和方法。

看了这本书的目录和介绍,应该挺适合咱们想要深刻研究Java异步编程相关技术的同窗。但愿你们能够从《Java异步编程实战》一书中获得一些Java异步编程方面的启发,对Java异步编程技术有了一个更好的理解与掌握(期待.jpg)。

最后,我给你们一个便捷购买入口吧,新书首发,你们敬请期待吧~

购买连接:https://item.jd.com/12778422.html 在这里插入图片描述