java 一个list 有1000条数据,循环这个list,取到对应的code,拿到这个code去库里查,能查到200条数据,然后这200条数据再循环去做处理,在这两个循环的地方用线程池提高效率,用Java代码写个demo
时间: 2024-05-01 14:17:20 浏览: 61
java合并LIST
4星 · 用户满意度95%
好的,这个问题可以通过Java多线程技术来提高效率。以下是一个简单的demo示例:
```java
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ListProcessingDemo {
public static void main(String[] args) {
// 模拟一个list
List<String> codeList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
codeList.add("code" + i);
}
// 线程池,使用固定大小的线程池,线程数量为10,可以根据实际情况设置
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 循环list,使用线程池处理每个code对应的数据
for (String code : codeList) {
executorService.execute(new Runnable() {
@Override
public void run() {
List<String> data = queryData(code);
for (String datum : data) {
processData(datum);
}
}
});
}
// 线程池用完需要关闭
executorService.shutdown();
}
// 模拟查询数据,返回一个随机数量的list
private static List<String> queryData(String code) {
List<String> data = new ArrayList<>();
int count = (int) (Math.random() * 200);
for (int i = 0; i < count; i++) {
data.add("data for " + code + "-" + i);
}
return data;
}
// 模拟处理数据
private static void processData(String data) {
System.out.println(Thread.currentThread().getName() + " process data: " + data);
}
}
```
代码中创建了一个长度为1000的list,每个元素是"code"加上序号。然后使用线程池循环处理每个code对应的数据。在queryData方法中,随机生成一个数量不定的list作为返回值,在processData方法中,只是简单地输出数据。
这个demo只是一个简单的示例,旨在演示如何使用线程池来提高list处理的效率,实际应用中需要根据具体需求进行调整和优化。
阅读全文