java 多线程处理千万数据_千万数据积压,用Spring快速封装多线程,处理效率的确很高...

工作中常常会出现,数据处理积压的情况,这个时候就会用到多线程,提高并发处理任务的能力。

线程是进程中执行运算的最小单位,进程是表示资源分配的基本单位,多线程代表一个程序进程下通过程序控制开启多个线程任务类。

java的jdk中已经分装好了多线程模块,实现多线程的方式有两种,一种是通过继承 Thread 类,另一种是通过实现 Runnable 接口。使用继承 Thread 类创建多线程,最大的缺点就是不能多继承,所以为了支持多继承,完全可以实现 Runnable 接口的方式。需要说明的是,这两种方式在工作时的性质都是一样的,没有本质的区别。

不过本文主要说明Spring快速搭建多线程

Spring是通过任务执行类( TaskExecutor )来实现多线程和并发编程。

使用ThreadPoolTaskExecutor可以实现一个基于线程池的TaskExecutor,而实际开发中任务一般是异步的,所以通常会通过@EnableAsync注解开启异步任务的开关

执行任务类

96c19bbe12298db1c6a76a78fc6e8a56.png

备注:

利用@EnableAsync注解开启异步任务支持。

业务处理类

通过@Async这个注解,如果注解在类级别,则表明该类所有的方法都是异步方法,而这里的方法自动被注入使用ThreadPoolTaskExecutor作为TaskExecutor.

d8b6fb6aee381a3252d0b580af428eaa.png

备注:

配置类实现AsyncConfigurer接口并重写getAsyncExecutor方法,并返回一ThreadPoolTaskExecutor ,这样我们就获得了一个基于线程池TaskExecutor

通过结果可以分析出是并发执行而不是顺序执行的

b220dd33ae8d7e8cf88104bc2594351d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值