异步编程(1)-初识异步

前言

近期博猪在负责一个风险测算的模块,其中的具体过程博猪就不细说了,但是总体的感觉就是心中有无数个草泥马在奔腾,但是现在仔细感觉还是值得写个博客来记录一下的。
具体场景为有些业务导入牵扯到一些计算,业务那边说是导入数据量比较庞大,所以博猪就用异步+多线程的方式处理了这个业务,本地和Linux环境跑了几遍,20个字段,2w数据,5个线程,总体耗时也就三秒左右,还是挺可观的。

什么异步编程

Java 异步编程是一种让程序并行运行的方式,它可以让程序中的一个工作单元与主应用程序线程分开独立运行,并且等工作单元运行结束后通知主应用程序线程它的运行结果或者失败原因。使用异步编程有许多好处,例如可以提高应用程序的性能和响应能力,提高线程的利用率,减少线程间的通信开销等。
Java 异步编程的核心是线程池,程序员可以通过提交任务到线程池来实现异步编程。
Java 异步编程在现实生活中有很多应用,例如网络 IO 请求、日志打印、异步打日志、异步消息处理等。
具体来说,Java异步编程包括以下几个要点:

  • 启动异步任务:通过某种机制启动一个与主程序分离的异步任务,比如线程、Future、CompletableFuture等。
  • 异步任务独立执行:一旦异步任务启动,主程序可以继续执行,而异步任务将在后台独立运行。
  • 获取异步执行的结果(可选):主程序如果需要异步任务的结果,可以通过某种方式获取其结果,比如调用Future的get方法或给CompletionHandler传递结果。但这不是异步执行的必要条件,有的异步任务不需要返回结果。
  • 异常处理(可选):通过 completion handlers 或其他异常处理机制对异步任务可能抛出的异常进行处理。
  • 线程管理(可选):有的异步方式需要手动管理执行线程,有的则通过线程池等机制自动管理。
    所以,总体来说,Java异步编程的关键就是启动一个与主程序分离的异步任务,并让其在后台运行,而主程序可以继续流程,不等待其完成。在需要结果或异常时,再通过相应机制获取或处理。
    这一模式允许程序同时处理多个任务,提高了程序的并发能力和响应性。线程的自动管理也简化了手动管理线程的难度。Java提供了多种实现异步编程的方式,比如线程、Future、CompletableFuture、响应式框架等。随着Java的发展,这些方式越来越简便高效。
    但其核心思想仍然是让异步任务独立于主程序执行,以实现并发和提高响应性。

异步编程(1)-初识异步
https://github.com/yangxiangnanwill/yangxiangnanwill.github.io/2024/01/03/好好码代码吖/JAVA/异步编程/异步编程(1)-初识异步/
作者
will
发布于
2024年1月3日
许可协议