java多线程遍历处理list集合

本文通过实例展示了如何将单线程请求第三方接口的方式优化为多线程处理,利用ExecutorService和CountDownLatch实现并发控制。对比单线程,多线程大大减少了处理500条数据的时间,提高了程序效率。同时,文章强调了在多线程中确保任务完成和线程安全的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发过程中经常遇到如下需求,拿到一个list数据,需要遍历它然后请求第三方接口,然后根据返回结果做一些事

常规写法

public static void main(String[] args) {
   
    List<User> list = getList();
    test1(list);
}

//假设有500条数据
static List<User> getList() {
   
    List<User> list = new ArrayList<>();
    for (int i = 1; i < 501; i++) {
   
        User user = new User();
        user.setIdCard(i + "");
        list.add(user);
    }
    return list;
}

//常规的单线程处理方法
static void test1(List<User> list) {
   
    long start = System.currentTimeMillis();
    for (User user : list) {
   
        sendRequest(user);
    }
    long end = System.currentTimeMillis();
    System.out.println("单线程方法,耗时:" + (end - start) + "ms");
}

//模拟请求第三方接口:根据身份证号获取姓名
static void sendRequest(User user){
   
    //模拟接口请求耗时
    try {
   
        Thread.sleep(10);
    } catch 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值