多线程执行某一个方法,方法参数为一个list集合,如何实现呢。

本文讨论了如何使用Java的多线程技术提高`access`方法处理数据列表的效率,通过创建并启动多个线程并行执行,最后提及可能需要考虑线程池以确保顺序执行。
摘要由CSDN通过智能技术生成

问题描述:access(String sn)方法是处理数据的一个方法,这个方法可能比较浪费时间,现在我用一个list存储sn,这些sn都需要用这个方法来处理数据,如何多线程执行来节约时间呢。

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        List<String> snList = new ArrayList<>();
        snList.add("1");
        snList.add("2");
        snList.add("3");
        // 假设snList已经填充好数据
        
        List<Thread> threads = new ArrayList<>();
        
        for (String sn : snList) {
            Thread thread = new Thread(() -> {
                access(sn);
            });
            threads.add(thread);
            thread.start();
        }
        
        // 等待所有线程执行完毕
        for (Thread thread : threads) {
            thread.join();
        }
        
        System.out.println("所有线程执行完毕");
    }
    
    public static void access(String sn) {
        // 处理数据的逻辑
        System.out.println("正在处理:" + sn);
    }
}

执行结果:

在上面的代码中,首先将所有的sn存储在一个List中,然后使用一个循环创建并启动多个线程,并将每个sn作为参数传递给access方法。最后,主线程使用join方法等待所有子线程执行完毕。

请注意,由于线程之间的执行是并行的,因此可能无法保证处理的顺序。如果需要保持顺序,可以使用线程池来控制线程的执行顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值