首页 > 编程语言 >Java线程池和Spring异步处理高级篇

Java线程池和Spring异步处理高级篇

时间:2023-03-15 12:13:09浏览次数:39  
标签:异步 Java Spring 线程 executor return null Async

开发过程中我们会遇到很多使用线程池的场景,例如异步短信通知,异步发邮件,异步记录操作日志,异步处理批量Excel解析。这些异步处理的场景我们都可以把它放在线程池中去完成,当然还有很多场景也都可以使用线程池,掌握线程池后开发中自己灵活应用。

例如在生成订单的时候给用户发送短信,生成订单的结果不应该被发送短信的成功与否所左右,也就是说生成订单这个主操作是不依赖于发送短信这个操作,我们就可以把发送短信这个操作置为异步操作。当然也有的小伙伴会说我使用多线程不就行了,为啥还要使用线程池,那我就先聊一下线程和线程池的优缺点。

使用线程的缺点:

1:每次new Thread对象的时候,新建对象这样性能很差。

2:线程缺乏管理,有可能无限创建线程,这样可能造成系统资源的浪费或者OOM(内存溢出)。

使用线程池的优点:

1:重用存在的线程,减少线程的创建,性能良好。

2:可以有效的控制最大的线程并发数,提高系统资源的利用率。

说完上面就知道使用线程池有多好了吧,那知道了线程池的好处,我们怎样使用线程池呢?好了重点对象出现了【PS 对象出现了汪汪汪

标签:异步,Java,Spring,线程,executor,return,null,Async
From: https://www.cnblogs.com/scott1102/p/17218002.html

相关文章

  • Java Math.random()函数
    Math.random() 函数返回一个浮点数,伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算......
  • java protobuff, byte,字节数组等等转对象
     java中,字节数组转对象不外乎以下几种:1.使用原生的serilize进行序列化读写这个直接使用java内置的进行读写就行,但是不方便而且体积大冗余信息多。 2.使用第三方......
  • Java同步容器之stack源码分析
    一、概述Stack是栈。它的特性是:先进后出(FILO,FirstInLastOut)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通......
  • 关于java对接物联网设备自定义协议的安全性,以及长链接场景下需要注意的事项
    目前从事于物联网行业。共享充电宝。负责通讯相关。当前设备在线量约50W台。记录一下走得弯路。方便大家借鉴。文笔不太好,希望大家轻喷。本文主要是从以下几个方......
  • JAVA设备对接中,字节协议序列化的简单方式
    一般来说,java在和设备进行对接时都会使用私有协议或自定义协议,在序列化这些协议时会相当的繁琐,而且比较注重细节。 基于之前的对接经验,我整理并完成了一套序列化框架。......
  • 【Java工具】在代码头部加版权
    importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.RandomAccessFile;publicclassTest......
  • JAVA物联网私有协议,自定义协议开发
    在当代物联网行业中,由于隐私和安全问题,很多的公司选择使用自定义的私有二进制协议。在C语言中,由于有结构体的加持,对象和字节数组转换起来就特别简单;但在java中,在没有原生支......
  • Java中List、Map常见实现类
    一、List1.ArrayList底层是数组实现,线程不安全publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.S......
  • python入门学习-3.多线程、多进程、网络通信
    进程和线程多任务线程是最小的执行单元,而进程由至少一个线程组成。多进程Linux操作系统提供了一个fork()系统调用,子进程返回0,父进程返回子进程的ID。调用getpid()可以......
  • JavaScript删除URL指定的参数和值
    JavaScript删除URL指定的参数和值,不跳转(functionhandleLocationHref(){varurl=window.location.href;varparams=(window.location.search||'?').s......