问题描述: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方法等待所有子线程执行完毕。
请注意,由于线程之间的执行是并行的,因此可能无法保证处理的顺序。如果需要保持顺序,可以使用线程池来控制线程的执行顺序。