<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用java-POI進行Excel多線程操作demo

      package com.alex.frameworkDemo.poi;

      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.util.concurrent.CountDownLatch;
      import java.util.concurrent.ExecutorService;
      import java.util.concurrent.Executors;

      import org.apache.poi.hssf.usermodel.HSSFCell;
      import org.apache.poi.hssf.usermodel.HSSFRow;
      import org.apache.poi.hssf.usermodel.HSSFSheet;
      import org.apache.poi.hssf.usermodel.HSSFWorkbook;

      /**
      * 測試POI
      * @author alex
      *
      */
      public class PoiTest {

      public static void main(String[] args) {
      multiThreadWrite();
      }

      /**
      * 使用多線程進行Excel寫操作,提高寫入效率。
      */
      public static void multiThreadWrite() {
      /**
      * 使用線程池進行線程管理。
      */
      ExecutorService es = Executors.newCachedThreadPool();
      /**
      * 使用計數柵欄
      */
      CountDownLatch doneSignal = new CountDownLatch(3);

      HSSFWorkbook wb;
      try {
      wb = new HSSFWorkbook(new FileInputStream("E:\\temp\\poiTest.xls"));
      HSSFSheet sheet = wb.getSheetAt(0);
      es.submit(new PoiWriter(doneSignal, sheet, 0, 19999));
      es.submit(new PoiWriter(doneSignal, sheet, 20000, 39999));
      es.submit(new PoiWriter(doneSignal, sheet, 40000, 59999));
      /**
      * 使用CountDownLatch的await方法,等待所有線程完成sheet操作
      */
      doneSignal.await();
      es.shutdown();
      FileOutputStream os = new FileOutputStream("E:\\temp\\poiTest.xls");
      wb.write(os);
      os.flush();
      os.close();
      System.out.println("Excel completed......");
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      } catch (InterruptedException e) {
      e.printStackTrace();
      }
      }

      /**
      * 測試基本的POI寫操作
      */
      public static void poiBasicWriteTest() {
      try {
      HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(
      "E:\\temp\\poiTest.xls"));
      HSSFSheet sheet = wb.getSheetAt(0);
      HSSFRow row = sheet.createRow(0);
      HSSFCell contentCell = row.createCell(0);
      contentCell.setCellValue("abc");
      FileOutputStream os = new FileOutputStream("E:\\temp\\poiTest.xls");
      wb.write(os);
      os.flush();
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }

      /**
      * sheet的row使用treeMap存儲的,是非線程安全的,所以在創建row時需要進行同步操作。
      * @param sheet
      * @param rownum
      * @return
      */
      private static synchronized HSSFRow getRow(HSSFSheet sheet, int rownum) {
      return sheet.createRow(rownum);
      }

      /**
      * 進行sheet寫操作的sheet。
      * @author alex
      *
      */
      protected static class PoiWriter implements Runnable {

      private final CountDownLatch doneSignal;

      private HSSFSheet sheet;

      private int start;

      private int end;

      public PoiWriter(CountDownLatch doneSignal, HSSFSheet sheet, int start,
      int end) {
      this.doneSignal = doneSignal;
      this.sheet = sheet;
      this.start = start;
      this.end = end;
      }

      public void run() {
      int i = start;
      try {
      while (i <= end) {
      HSSFRow row = getRow(sheet, i);
      HSSFCell contentCell = row.getCell(0);
      if (contentCell == null) {
      contentCell = row.createCell(0);
      }
      contentCell.setCellValue(i + 1);
      ++i;
      }
      } catch (Exception e) {
      e.printStackTrace();
      } finally {
      doneSignal.countDown();
      System.out.println("start: " + start + " end: " + end
      + " Count: " + doneSignal.getCount());
      }
      }

      }
      }

      posted @ 2020-01-06 15:48  宇宙很浩瀚  閱讀(4126)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩加勒比一本无码精品| 欧美在线观看www| 镇原县| 日韩一区二区三区水蜜桃| 卡一卡2卡3卡精品网站| 久久天天躁狠狠躁夜夜网站| 亚洲人成网站在线观看播放不卡| 亚洲永久视频| 久久99国产精品尤物| 国产精品无码成人午夜电影| 国产伦一区二区三区久久| 男女xx00xx的视频免费观看| 在线看无码的免费网站| 绥阳县| 欧美日本在线一区二区三区| 国产免费福利网站| 国产精品免费视频不卡| 欧美人与动牲猛交A欧美精品| 最新的国产成人精品2020| 亚洲日本va午夜中文字幕久久| 日韩精品国产中文字幕| 福利一区二区在线播放| 日本在线 | 中文| 国产中文三级全黄| 亚洲精品国模一区二区| 国产成人午夜福利精品| 一区二区三区午夜无码视频| 欧美肥老太交视频免费| 国产欧美va欧美va在线| 国产超高清麻豆精品传媒麻豆精品| 亚洲成人av免费一区| 国产精品一区二区三区激情| 欧美性猛交xxxx免费看| 久久夜色精品国产亚av| 四虎成人精品永久网站| 依依成人精品视频在线观看| 91亚洲国产成人精品性色| 成年女人免费视频播放体验区 | 亚洲欧洲色图片网站| 色吊丝免费av一区二区| 亚洲国产精品综合久久20|