我篇文章
大数据批量新增or修改太慢太Low,线程池、CountDownLatch、CompletableFuture完美解决
弊端就是无法实现事务控制。
那么今天他就来啦!
需求
大数据平台去获取数据---->通过对象组装-------> 插入到对应的表当中
需求分析
- 效率太慢(多线程)
- 多线程下事务控制如何处理(包学会、要有JUC基础)
- mybatis下数据缓存副本如何处理(创建新的SqlSession)
- 主、子线程如何协调执行(CountDownLatch)
- 如何让子线程同步等待(CyclicBarrier)
- 回滚属性如何控制(AtomicBoolean)
- 对象转换耗时(map- 各种方法调用(耗时)->bean (多线程,同步等待操作)
- 以上所有多线程都会基于CompletableFuture来完成
需求分析的信息量太大。需要您满满喝。
非多线程处理 sizeFinal=4w
看效率 (2s)5239ms
数据
单线程下的事务我都不用讲了!
多线程登场 对象转换和批量插入 992ms(不到1秒)搞定
看执行效率 2934ms
数据
多线程下事务统一回滚演示、业务逻辑 sizeFinal = 40001
完事!事务控制大功告成!同步等待查询搞定!