【发布时间】:2018-11-01 06:43:35
【问题描述】:
我有很多数据要处理并插入到一个列表中,然后我需要将此列表插入到我的数据库中,每次它里面有 100k 个字符串。将列表保存到数据库时如何暂停 ExecutorService? 可以锁吗?
我的问题的示例代码:
ExecutorService executor = Executors.newFixedThreadPool(threadAmount);
List <String> list = new ArrayList<>();
for(Object obj: ObjectList){
objectThreadProcess dto = new ObjectThreadProcess(obj.toString(), obj.id);
executor.submit(dto);
executor.execute(dto);
if(list.size() == 100000){
//I need to pause threads here to not insert while I'm inserting into DB and creating a new list
ObjDAO.largeInsert(list);
list = new ArrayList<>();
}
}
【问题讨论】:
-
executor.submit(dto); executor.execute(dto);- 为什么要提交两次任务? -
这是一个示例代码,没有计划,但感谢您的观察
-
不,largeInsert 是 ObjDAO(它是一个静态类)中的一个方法,我在其中获取此列表并将插入到 DB 中
标签: java multithreading executorservice