首页 > 解决方案 > sql server 上的 ExecutorService 多线程

问题描述

我正在构建一个 java 应用程序以将数据从 sql server 数据库导入到 Elastic Search 我正在使用带有 Callable 的 ExecutorService 来使线程每个线程都使用页码也使用池连接。我注意到一个线程只在数据库中运行我希望线程并行运行而不是串行运行

  int count=  Runtime.getRuntime().availableProcessors(); ;
    ExecutorService asyncExecutor = Executors.newFixedThreadPool(count);
    List<Future<List<json>>> list = new ArrayList<Future<List<json>>>();
    Future<List<json>> ml = null;
    List<json> jList = null;
    CutrePool c = new CutrePool(DBL.DB.URL2, DBL.DB.USER, DBL.DB.PASS);
    do {
        try {
            for (int i = 0; i < count; i++) {
                Therads1 t = new Therads1(page, PageSize, c.getConnection());
                ml = asyncExecutor.submit(t);
                list.add(ml);
                page += 1;
            }
            for (Future<List<json>> j : list) {
                jList = j.get();
                if (!(jList == null)) {
                    asyncExecutor.execute(new Therads0(jList));
                    System.out.println(" count in elastic   " + BL.es.pLcount);

            }
      }

在此处输入图像描述

标签: javamultithreadingexecutorservice

解决方案


推荐阅读