java 多线程问题请教
问题描述:
- http 请求到后台,一个 list 数据到后台,返回结果的实时性要求比较高
- list 中多条明细,需要根据一定的规则进行筛选 ,比较耗时很久,此处想采用多线程优化
- 关键点: 在筛选过程中, 子线程的筛选规则需要查询 表 C 和表 D; 获得值
- 筛选 ok,得到值,会添加到明细中,然后分别会落四张表,表 A,表 B,表 C,表 D
- 关键点 2: 只要一条明细插入失败,所有的记录进行回滚

问题描述:
1 xuanbg Jul 29, 2021 貌似没有返回什么结果啊???这样开个新的线程慢慢写或者丢进消息队列异步处理就好了,都是立马就能返回成功的。 |
3 clickhouse Jul 29, 2021 看 2 说的,你想多线程优化的只是筛选,那么多线程筛选即可,反正只查表。“一条明细插入失败,所有的记录进行回滚”不就是正常的事务嘛。 |
4 wanli121 OP @clickhouse 目前情况: 1.子线程查询筛选,在查表 C,表 D 时候,会发生锁表,导致子线程一直等待 2. 落表 A,B,C,D 是在 main 线程 (接手别人的代码) 改良思路: 1. 将落表逻辑提到子线程中,各个明细只管自己 想到的问题: 1. 一个线程失败,其他线程有插入成功, 这个整体回滚怎么做? |
5 DreamSpace Jul 29, 2021 via Android list.parallelStream() 最后 reduce 成一个 Map<String,List<?>>,遍历 Map 批量插入 |
6 wanli121 OP @DreamSpace 能详细说说嘛? 这个流,直接在 main 线程使用? 写 java 写的少 |