您可以使用 Java 的多线程来实现每次将列表中的 1000 条数据插入数据库。以下是一个简单的示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class InsertDataThread implements Runnable {
    private List<Data> dataList;
    
    public InsertDataThread(List<Data> dataList) {
        this.dataList = dataList;
    }
    
    @Override
    public void run() {
        // 连接数据库并插入数据的逻辑
        // ...

        // 假设将数据插入到名为'table_name'的表中
        for (Data data : dataList) {
            // 将 data 插入到数据库中的逻辑
            // ...
            System.out.println('Inserting data: ' + data);
        }
    }
    
    public static void main(String[] args) {
        // 创建一个包含 10000 条数据的列表
        List<Data> dataList = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            dataList.add(new Data(i));
        }
        
        // 创建一个线程池,线程数为 10
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        
        // 每次将 1000 条数据拆分为一个子列表,每个子列表交给一个线程来处理
        int batchSize = 1000;
        for (int i = 0; i < dataList.size(); i += batchSize) {
            List<Data> sublist = dataList.subList(i, Math.min(i + batchSize, dataList.size()));
            executorService.execute(new InsertDataThread(sublist));
        }
        
        // 关闭线程池
        executorService.shutdown();
    }
}

class Data {
    private int id;

    public Data(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return 'Data{' +
                'id=' + id +
                '}';
    }
}

在上述示例中,我们首先创建了一个包含 10000 条数据的列表 dataList。然后,我们创建了一个线程池 executorService,线程数为 10。接下来,我们将数据列表每次拆分为 1000 条数据的子列表,并将每个子列表交给一个线程来处理。每个线程会将子列表中的数据插入到数据库中。最后,我们关闭线程池。

请注意,上述示例仅为演示多线程插入数据的基本思路,实际使用时,您需要根据具体的数据库连接和数据插入逻辑进行相应的修改。

Java 多线程批量插入数据库 - 每1000条数据一个线程

原文地址: https://www.cveoy.top/t/topic/qhpQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录