当前位置:   article > 正文

用java写一个多线程异步批量入库_大量数据入库需要多线程异步吗

大量数据入库需要多线程异步吗

下面是一个用 Java 实现的多线程异步批量入库的示例:

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.concurrent.ExecutorService;
  4. import java.util.concurrent.Executors;
  5. public class BatchInsertDemo {
  6. private static final int BATCH_SIZE = 1000; // 每批次入库的数据量
  7. private static final int THREAD_POOL_SIZE = 5; // 线程池大小
  8. private static final int TOTAL_COUNT = 10000; // 总共需要入库的数据量
  9. public static void main(String[] args) {
  10. // 模拟数据
  11. List<Data> dataList = new ArrayList<>();
  12. for (int i = 1; i <= TOTAL_COUNT; i++) {
  13. dataList.add(new Data(i));
  14. }
  15. // 创建线程池
  16. ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
  17. // 按批次提交任务
  18. int start = 0;
  19. while (start < TOTAL_COUNT) {
  20. int end = Math.min(start + BATCH_SIZE, TOTAL_COUNT);
  21. List<Data> batchList = dataList.subList(start, end);
  22. BatchInsertTask task = new BatchInsertTask(batchList);
  23. executorService.submit(task);
  24. start = end;
  25. }
  26. // 关闭线程池
  27. executorService.shutdown();
  28. }
  29. // 数据对象
  30. private static class Data {
  31. private int id;
  32. public Data(int id) {
  33. this.id = id;
  34. }
  35. public int getId() {
  36. return id;
  37. }
  38. public void setId(int id) {
  39. this.id = id;
  40. }
  41. }
  42. // 入库任务
  43. private static class BatchInsertTask implements Runnable {
  44. private List<Data> dataList;
  45. public BatchInsertTask(List<Data> dataList) {
  46. this.dataList = dataList;
  47. }
  48. @Override
  49. public void run() {
  50. // 执行批量入库逻辑
  51. System.out.printf("开始入库,当前批次共有 %d 条数据\n", dataList.size());
  52. try {
  53. Thread.sleep(1000); // 模拟入库耗时
  54. } catch (InterruptedException e) {
  55. e.printStackTrace();
  56. }
  57. System.out.printf("完成入库,当前批次共有 %d 条数据\n", dataList.size

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/450383
推荐阅读
相关标签
  

闽ICP备14008679号